Home liberachat/#haskell: Logs Calendar

Logs on 2024-08-07 (liberachat/#haskell)

00:00:08 <menash> (the definition is good. i get Defined in response of the @let expression)
00:00:40 <menash> @let z x xs = xs ++ [x]
00:00:42 <lambdabot> Defined.
00:00:42 <jackdk> menash: Can you put the entire source file you're working with into a pastebin or play.haskell.org?
00:00:47 <jackdk> @where paste
00:00:47 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
00:01:10 <menash> > foldr z [] [1,2,3,4]
00:01:11 <lambdabot> error:
00:01:11 <lambdabot> Ambiguous occurrence ‘z’
00:01:11 <lambdabot> It could refer to
00:01:19 <jackdk> Or is this lambdabot-specific?
00:01:40 <geekosaur> Yes, it's colliding with the one from simple-reflect
00:02:15 <geekosaur> All one-letter names are taken
00:02:33 <menash> lambdabot specific. i want him to help me see what is going on with reverse a list using foldr with te function: f x xs = xs ++ [x]
00:03:36 × EvanR quits (~EvanR@user/evanr) (Ping timeout: 276 seconds)
00:04:21 <geekosaur> :t f
00:04:22 <lambdabot> error:
00:04:22 <lambdabot> Ambiguous occurrence ‘f’
00:04:22 <lambdabot> It could refer to
00:04:33 <geekosaur> Welp
00:04:46 <geekosaur> @undefine
00:04:46 <lambdabot> Undefined.
00:04:53 <geekosaur> :t f
00:04:54 <lambdabot> FromExpr a => a
00:05:35 <geekosaur> That's so it can pretend to be a function
00:06:37 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
00:09:13 <menash> @let f = (\x xs -> xs ++[x])
00:09:14 <lambdabot> Defined.
00:09:22 <geekosaur> it'll collide again
00:09:33 <menash> > foldr f [] [1,2,3,4]
00:09:34 <lambdabot> error:
00:09:35 <lambdabot> Ambiguous occurrence ‘f’
00:09:35 <lambdabot> It could refer to
00:09:39 <geekosaur> you can't override simple-reflect
00:10:02 <menash> i don't know what is simple-reflect. i'm very newb.
00:10:16 <geekosaur> @hackage simple-reflect
00:10:17 <lambdabot> https://hackage.haskell.org/package/simple-reflect
00:11:20 <menash> geekosaur: can i cabal install simple-reflect and then get what i want in ghci?
00:11:39 <menash> or it is not so simple?
00:12:02 <geekosaur> no, because you can't replace its f with something concrete
00:12:10 <geekosaur> @undef
00:12:11 <lambdabot> Undefined.
00:12:37 <geekosaur> > foldr (\x xs -> xs ++ x) [1,2,3,4] :: [Expr]
00:12:38 <lambdabot> error:
00:12:38 <lambdabot> • Couldn't match expected type ‘[Expr]’
00:12:38 <lambdabot> with actual type ‘t0 [a0] -> [a0]’
00:12:46 <geekosaur> I didn't think that would work
00:12:53 <geekosaur> I think simple-reflect is too dumb for that
00:13:11 <geekosaur> > foldr (\x xs -> xs ++ x) 0 [1,2,3,4] :: [Expr]
00:13:13 <lambdabot> error:
00:13:13 <lambdabot> • No instance for (Num [Expr]) arising from the literal ‘0’
00:13:13 <lambdabot> • In the second argument of ‘foldr’, namely ‘0’
00:13:23 <menash> the x should be with [x] i think
00:13:29 Inst joins (~Inst@user/Inst)
00:13:40 <geekosaur> > foldr (\x xs -> xs ++ x) 0 [1,2,3,4] :: Expr
00:13:41 <lambdabot> error:
00:13:41 <lambdabot> • Couldn't match expected type ‘Expr’ with actual type ‘[a0]’
00:13:41 <lambdabot> • In the expression:
00:13:46 <geekosaur> nope
00:13:53 <menash> i mean:
00:14:00 <geekosaur> Expr doesn't work with Num, among other things
00:14:20 <menash> foldr (\x xs -> xs ++ [x]) [] [1,2,3,4]
00:14:26 <menash> > foldr (\x xs -> xs ++ [x]) [] [1,2,3,4]
00:14:28 <lambdabot> [4,3,2,1]
00:14:35 <geekosaur> but in any case, simple-reflect is not a general execution tracer, it uses type trickery that can handle very simple cases but nothing else
00:14:59 <geekosaur> > scanr (\x xs -> xs ++ [x]) [] [1,2,3,4]
00:15:00 <lambdabot> [[4,3,2,1],[4,3,2],[4,3],[4],[]]
00:15:29 <geekosaur> doesn't show a trace btu does show intermediate results
00:17:29 <menash> > foldr f a [1,2,3]
00:17:31 <lambdabot> f 1 (f 2 (f 3 a))
00:17:54 <menash> can i make it infix?
00:18:00 <menash> the function
00:18:24 <geekosaur> no, that requires rewriting the Show instance in simple-reflect, I think
00:18:42 <geekosaur> or using a symbol?
00:18:56 <geekosaur> > foldr (*) a [1,2,3]
00:18:57 <lambdabot> 1 * (2 * (3 * a))
00:19:57 <menash> foldr (\x xs -> xs ++ [x]) a [1,2,3,4]
00:20:01 <menash> > foldr (\x xs -> xs ++ [x]) a [1,2,3,4]
00:20:02 <lambdabot> error:
00:20:02 <lambdabot> • Couldn't match expected type ‘[a]’ with actual type ‘Expr’
00:20:02 <lambdabot> • In the second argument of ‘foldr’, namely ‘a’
00:20:19 <menash> why in your example it is working?
00:27:28 <geekosaur> did you look at the type of foldr?
00:27:33 <geekosaur> :t foldr
00:27:34 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
00:30:48 <geekosaur> also, if I fix that, simple-reflect doesn't have anything to work on so it just gives the simple result
00:31:21 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
00:31:49 <geekosaur> you're probably best off using https://pbv.github.io/haskelite/site/index.htmllike jackdk suggested
00:31:59 <geekosaur> simple-reflect is too simple to do what you want
00:33:47 <menash> yes that is what i using now and i think i get a sort of breakthrough with my understnaing what is happening.
00:34:08 <menash> sorry for the mistakes in my writing :)
00:34:17 EvanR joins (~EvanR@user/evanr)
00:37:30 <menash> geekosaur: thank for the help and have a great day/evening/night :-)
00:38:39 × menash quits (~halloy540@147.235.212.157) (Quit: menash)
00:43:54 × oo_miguel quits (~Thunderbi@78.10.207.46) (Ping timeout: 276 seconds)
00:45:25 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
00:47:16 × skyesoss quits (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Quit: skyesoss)
00:49:40 skyesoss joins (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
00:55:56 × g00gler quits (uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
01:02:13 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
01:02:53 × pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 245 seconds)
01:03:53 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
01:08:01 pointlessslippe1 joins (~pointless@212.82.82.3)
01:09:30 × ZharMeny quits (~user@user/ZharMeny) (Quit: M-x meow)
01:10:46 slack1256 joins (~slack1256@2803:c600:5111:80cb:a1ed:c7bd:aa66:b480)
01:17:22 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds)
01:21:27 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
01:22:06 stiell joins (~stiell@gateway/tor-sasl/stiell)
01:30:25 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
01:30:49 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
01:36:44 × zzz quits (~z@user/zero) (Ping timeout: 260 seconds)
01:38:55 zero joins (~z@user/zero)
01:39:53 <probie> I wonder how much more terse the syntax of Haskell could be. There's not really much room for "improvement" is there?
01:41:11 × migas977 quits (~migas@static.140.65.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.github.io)
01:42:29 <geekosaur> not if you want to keep readability. you could probably exolang it (APL it?) with appropriate unicode character "keywords"
01:43:08 <geekosaur> but you can't do much with e.g. let without losing things like pattern bindings
01:44:39 <probie> "keep readability" was not one of my concerns
01:48:00 <probie> I've been attempting to navigate the source of https://codeberg.org/ngn/k since yesterday. It claims to be C, but I have my doubts (start at `a.h` if you're willing to give up your sanity).
01:50:02 <geekosaur> IOCCC lives!
01:51:32 <probie> Except this wasn't written for that. This is just what the author thought the best code style was
01:51:34 <geekosaur> also I'm reminded of the original Bourne shell source (written in a bizarre "dialect" of Algol 60 implemented as cpp macros)
01:52:54 <probie> as in `#define BEGIN {` shenanigans?
01:53:11 <geekosaur> yes only more so
01:53:35 <geekosaur> (similarly I suspect that source is trying to write in as close to K as cpp can make C)
01:54:01 <geekosaur> for some reason it feels more like Mumps
01:54:25 billchenchina- joins (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
01:59:57 × billchenchina- quits (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Ping timeout: 276 seconds)
02:01:59 <probie> The style was pioneered by Arthur Whitney who at age 11 suffered permanent brain damage when Ken Iverson taught him APL. For an example of Arthur's code, here's a 1 page "proof of concept" interpreter for J https://code.jsoftware.com/wiki/Essays/Incunabulum, which Roger Hui then fleshed out.
02:04:11 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
02:16:16 × xff0x quits (~xff0x@2405:6580:b080:900:7bc4:5f07:443b:cdc) (Ping timeout: 272 seconds)
02:18:09 <jackdk> Only problem I see is the use of `gets()`
02:23:06 <geekosaur> nobody cared in 1989
02:31:20 × td_ quits (~td@i53870936.versanet.de) (Ping timeout: 252 seconds)
02:33:21 td_ joins (~td@i5387090B.versanet.de)
02:48:15 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
02:57:13 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
02:59:52 × terrorjack quits (~terrorjac@static.163.82.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
03:03:07 terrorjack joins (~terrorjac@static.163.82.63.178.clients.your-server.de)
03:04:47 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:05:13 aforemny joins (~aforemny@2001:9e8:6cc6:2f00:b85e:457c:6740:c35)
03:05:36 <jackdk> I'm being silly — big page of ... idiosyncratic CPP use? Nah, the only problem is the single use of `gets()` at the bottom.
03:06:15 × aforemny_ quits (~aforemny@2001:9e8:6ce5:9e00:3eae:bcb7:91ff:d64b) (Ping timeout: 276 seconds)
03:10:11 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
03:10:48 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
03:11:15 <Axman6> You should see the Python I've been writing in C, it's pretty much all CPP
03:20:13 <Axman6> probie: once that code's formatted, it's not too bad (i'm sure you wrote worse at uni =) )
03:48:43 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 245 seconds)
03:50:24 × down200 quits (~down200@shell.lug.mtu.edu) (Quit: ZNC - https://znc.in)
03:51:54 × skyesoss quits (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Ping timeout: 272 seconds)
03:52:28 × Inst quits (~Inst@user/Inst) (Ping timeout: 245 seconds)
03:53:47 down200 joins (~down200@shell.lug.mtu.edu)
04:08:11 Inst joins (~Inst@user/Inst)
04:12:43 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
04:16:28 danse-nr3 joins (~danse-nr3@user/danse-nr3)
04:25:51 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer)
04:26:07 danse-nr3 joins (~danse-nr3@user/danse-nr3)
04:29:22 Maxdamantus joins (~Maxdamant@user/maxdamantus)
04:32:19 × mulk quits (~mulk@p5b112b2e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
04:34:30 mulk joins (~mulk@p5b112b2e.dip0.t-ipconnect.de)
04:36:36 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
04:44:52 rosco joins (~rosco@175.136.158.234)
05:00:55 madhavanmiui joins (~madhavanm@2409:40f4:8:6451:8000::)
05:00:55 × madhavanmiui quits (~madhavanm@2409:40f4:8:6451:8000::) (Client Quit)
05:02:38 michalz joins (~michalz@185.246.207.217)
05:11:40 dsrt^ joins (~dsrt@c-98-242-74-66.hsd1.ga.comcast.net)
05:23:49 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
05:30:05 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:36:07 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
05:37:11 euleritian joins (~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de)
05:37:11 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
05:43:14 × euleritian quits (~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
05:43:31 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
05:48:18 tabaqui joins (~root@87.200.123.114)
05:54:44 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: on the move)
05:56:16 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Quit: leaving)
05:56:34 Maxdamantus joins (~Maxdamant@user/maxdamantus)
05:58:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:11:54 × rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal)
06:17:35 <Inst> probie: haskell's tersity is limited by types and purity
06:21:29 CiaoSen joins (~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03)
06:25:28 <Inst> i suppose you could replace >>=, *>, <$>, and <*> wth some shorter operators, though, and make it idiomatic to avoid spacing in their use, but that sort of turns into APL quite quickly
06:25:47 <jackdk> probie: https://raw.githubusercontent.com/mxswd/flip-plus/master/Control/FlipPlus.hs
06:28:06 <Inst> it also makes me wonder how people would have done monads if it was built into the language instead of being a later bolt-on
06:28:37 <davean> You mean syntactically?
06:28:41 <Inst> yeah
06:29:43 <davean> Lets be thankful they didn't, they'd have named the opperator :::
06:30:41 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 248 seconds)
06:31:19 <Inst> that's in the moggi paper?
06:31:48 <davean> No, but if they think something is important in Haskell they name it based on : and the more you use it, the more :s they use.
06:32:28 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
06:33:18 euleritian joins (~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de)
06:40:52 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:46:58 ticat joins (~ticat@156.251.248.134)
06:48:52 danse-nr3 joins (~danse-nr3@user/danse-nr3)
06:56:03 Square joins (~Square@user/square)
06:58:13 × euleritian quits (~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
06:58:32 euleritian joins (~euleritia@77.22.252.56)
07:00:41 oo_miguel joins (~Thunderbi@78.10.207.46)
07:00:56 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:01:13 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
07:01:43 fun-safe-math joins (~fun-safe-@24.21.106.247)
07:03:44 <jackdk> Lens question: ignoring questions of lawfulness, is there a standard combinator that combines two `Fold s a`, yielding a `Fold s a` that works over both?
07:04:32 <c_wraith> if you're using it solely as a fold, <>
07:04:32 <Axman6> does <> work?
07:04:44 <c_wraith> when you start to use it as a traversal, it breaks badly
07:04:52 <jackdk> whaaat, that's crazy
07:05:02 <Axman6> > (Nothing, 2) .~ (_Just <> _2)
07:05:04 <lambdabot> error:
07:05:04 <lambdabot> • Couldn't match type ‘(Maybe a0, b0)’
07:05:04 <lambdabot> with ‘(a1 -> Identity ((a2 -> f0 b1) -> Maybe a2 -> f0 ...
07:05:11 <Axman6> > (Nothing, 2) ..~ (_Just <> _2)
07:05:12 <lambdabot> error:
07:05:12 <lambdabot> • Variable not in scope:
07:05:12 <lambdabot> (..~)
07:05:23 <Axman6> bleh, I can't remember my lens operators!
07:05:33 <danse-nr3> "ignoring questions of lawfulness" ... "whaaat, that's crazy"
07:05:34 <jackdk> You've been away too long
07:06:01 <jackdk> I couldn't reason through from the type alias for `Fold` to see that it would have a `Semigroup` instance
07:06:15 <Axman6> You should see the lens stuff I was writing last night, using all the crazy operators (<~ is so handy) but I've forgotten the basics!
07:06:54 <haskellbridge> <magic_rb> Can we see the lens stuff? I do like me some lenses
07:07:29 <Axman6> > (Nothing, 2) ^? (_Just <> _2)
07:07:31 <lambdabot> error:
07:07:31 <lambdabot> • Couldn't match type ‘Maybe a’ with ‘(Maybe a0, b0)’
07:07:31 <lambdabot> Expected type: Getting (First a) (Maybe a0, b0) a
07:08:06 rosco joins (~rosco@175.136.158.234)
07:08:07 <Axman6> I dunno what I'm doing any more
07:08:16 <haskellbridge> <magic_rb> 😆
07:08:21 <c_wraith> > [1..10] ^.. (traverse . filtered odd <> traverse . filtered even)
07:08:23 <lambdabot> [1,3,5,7,9,2,4,6,8,10]
07:08:33 <Axman6> > (Nothing, 2) ^? (_1 . _Just <> _2)
07:08:34 <lambdabot> Just 2
07:08:42 <Axman6> > (Just 3, 2) ^? (_1 . _Just <> _2)
07:08:43 <lambdabot> Just 3
07:09:15 <Axman6> c_wraith: that feels like the basis for an FFT implementation
07:12:18 <jackdk> Axman6: how about the FlipPlus Fourier Transform?
07:12:32 × berberman quits (~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
07:12:55 <haskellbridge> <magic_rb> Ive no idea whay im reading, i especially dont get how mappend fits into this
07:12:55 berberman joins (~berberman@user/berberman)
07:13:06 sawilagar joins (~sawilagar@user/sawilagar)
07:13:26 <c_wraith> it's basically coincidence
07:13:35 × berberman quits (~berberman@user/berberman) (Client Quit)
07:13:54 <haskellbridge> <magic_rb> Kind if behaves like aplicative or in some cases, <|>
07:14:03 <haskellbridge> <magic_rb> From the examples you gave
07:14:09 <c_wraith> There was no particular design for <> to work that way with lens, but the existing instances just sort of work.
07:14:28 berberman joins (~berberman@user/berberman)
07:14:36 <haskellbridge> <magic_rb> Ah the magic of actually respecting math, things just emerge
07:14:47 <c_wraith> well. They work for a Fold
07:15:02 <c_wraith> They don't work so much when more structure is expected.
07:15:44 <Axman6> % :info Fold
07:15:44 <yahb2> <interactive>:1:1: error: Not in scope: ‘Fold’
07:15:53 <Axman6> % :info Control.Lens.Fold
07:15:53 <yahb2> <interactive>:1:1: error: Not in scope: ‘Control.Lens.Fold’
07:15:56 <Axman6> :(
07:17:29 × ticat quits (~ticat@156.251.248.134) (Quit: Client closed)
07:17:45 <c_wraith> IIRC, Fold s t a b is roughly (Applicative f, Contravariant f) => (a -> f b) -> s -> f t ?
07:18:16 <c_wraith> Oh, it has fewer type variables. just s and a
07:18:21 <c_wraith> But the rest is right
07:18:24 <Axman6> yeah
07:18:45 <Axman6> the fact semigroupie things work on Folds isn't too surprising
07:18:47 <c_wraith> Right, having b and t only makes sense if you can reconstitute the value
07:19:30 <c_wraith> And combining Applicative and Contravariant requires f's parameter to be phantom anyway...
07:21:45 <c_wraith> So you have things like f ~ Const (Endo [a]) when using (^..).
07:25:34 acidjnk joins (~acidjnk@p200300d6e72cfb848054de8284f67264.dip0.t-ipconnect.de)
07:31:45 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:37:29 × YoungFrog quits (~youngfrog@2a02:a03f:c9db:fc00:40f:34b2:83e3:2019) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
07:37:48 YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
07:42:59 × Lears quits (~Leary@user/Leary/x-0910699) (Remote host closed the connection)
07:43:14 Leary joins (~Leary@user/Leary/x-0910699)
07:50:40 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 272 seconds)
07:56:27 someone235 joins (uid419897@id-419897.ilkley.irccloud.com)
07:59:13 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: on the move)
08:01:53 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:03:44 × ft quits (~ft@p4fc2aa15.dip0.t-ipconnect.de) (Quit: leaving)
08:05:22 cfricke joins (~cfricke@user/cfricke)
08:11:23 danse-nr3 joins (~danse-nr3@user/danse-nr3)
08:26:20 dans22103 joins (~danse-nr3@user/danse-nr3)
08:28:45 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Ping timeout: 252 seconds)
08:32:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:44:31 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
08:46:35 sawilagar joins (~sawilagar@user/sawilagar)
08:51:12 ubert joins (~Thunderbi@178.115.47.16.wireless.dyn.drei.com)
09:17:50 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 244 seconds)
09:18:29 gehmehgeh joins (~user@user/gehmehgeh)
09:18:37 gehmehgeh is now known as gmg
09:22:58 migas977 joins (~migas@static.140.65.63.178.clients.your-server.de)
09:29:12 meritamen joins (~user@user/meritamen)
09:35:16 × Tisoxin quits (~Ikosit@user/ikosit) (Quit: The Lounge - https://thelounge.chat)
09:35:51 × meritamen quits (~user@user/meritamen) (Remote host closed the connection)
09:36:02 Tisoxin joins (~Ikosit@user/ikosit)
09:37:46 billchenchina- joins (~billchenc@103.118.42.229)
09:38:51 × billchenchina- quits (~billchenc@103.118.42.229) (Max SendQ exceeded)
09:40:20 billchenchina- joins (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
09:40:58 × billchenchina- quits (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Max SendQ exceeded)
09:41:49 billchenchina- joins (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
09:46:39 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds)
09:47:45 × dans22103 quits (~danse-nr3@user/danse-nr3) (Remote host closed the connection)
09:47:59 danse-nr3 joins (~danse-nr3@user/danse-nr3)
09:49:15 × Square quits (~Square@user/square) (Ping timeout: 276 seconds)
09:51:38 × billchenchina- quits (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Ping timeout: 272 seconds)
09:52:44 billchenchina- joins (~billchenc@103.118.42.229)
09:56:30 Guest85 joins (~Guest85@78.135.8.93)
09:59:36 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:00:59 × someone235 quits (uid419897@id-419897.ilkley.irccloud.com) (Quit: Connection closed for inactivity)
10:01:41 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
10:04:41 <Guest85> from https://web.engr.oregonstate.edu/~erwig/pfp/pfp-jun06.tar.gz
10:04:41 <Guest85> ```simEval :: Int -> Strategy -> RDist Outcome
10:04:42 <Guest85> simEval k s = Dist.map result `fmap` (k ~. game s) start```
10:04:42 <Guest85> how do I read this implementation? `Dist.map` should be the same as `fmap`, afaict, but I can't work out the types, or even precedence, yet. Would it be clearer using `<$>`, which I also can't get to compile?
10:04:48 <danse-nr3> @paste
10:04:49 <lambdabot> A pastebin: https://paste.debian.net/
10:08:31 × euphores quits (~SASL_euph@user/euphores) (Ping timeout: 264 seconds)
10:09:24 <Guest85> not sure if this is easier to follow for just 2 lines ... but https://paste.debian.net/1325716/
10:09:46 <danse-nr3> cheers Guest85
10:10:05 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
10:10:49 <Guest85> my pleasure - let me know if I should be pasting more into there, or just let anybody who is interested unzip the file I linked to
10:12:01 sawilagar joins (~sawilagar@user/sawilagar)
10:12:03 <Guest85> my assumption was that somebody who can read this and understand it probably does not need much more context (from the archive file), but that may be an unsafe assumption
10:12:47 xff0x joins (~xff0x@2405:6580:b080:900:bb9f:ea83:5088:5a06)
10:14:32 <mauke> fmap (Dist.map result) ((k ~. game s) start)
10:14:55 euphores joins (~SASL_euph@user/euphores)
10:15:18 <Guest85> also, another question - the instructions say just `ghci Dice.hs` and ... But, presumably, because this work/paper is from 2006 and the standard libraries have evolved since then, nothing works with my version of haskell installed. Since there is no cabal file, what is a practical way to get the right version of haskell (eg are there a docker
10:15:19 <Guest85> containers for this sort of thing)?
10:16:24 <Guest85> mauke - thanks. I got that much, but would you not expect to swap in `<$>` and for the types to still align?
10:16:37 × CiaoSen quits (~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03) (Ping timeout: 252 seconds)
10:17:08 <Guest85> the inner `fmap` is OK to swich to `<$>` but the `Dist.map` I could not work out
10:18:40 ZharMeny joins (~user@user/ZharMeny)
10:20:17 JuanDaugherty joins (~juan@user/JuanDaugherty)
10:22:41 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: meal)
10:24:29 × billchenchina- quits (~billchenc@103.118.42.229) (Ping timeout: 244 seconds)
10:25:39 billchenchina- joins (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
10:26:25 <Guest85> anyway, mauke, I find your version much less ambiguous, so thank you, that already helped.
10:32:15 × billchenchina- quits (~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Ping timeout: 260 seconds)
10:33:36 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
10:36:45 <Leary> Guest85: Assuming `RDist` and `Outcome` are constructors (not type synonyms) the type of `simEval` implies `Dist.map :: _ -> _ -> Outcome`, which cannot unify with `fmap`. Presumably it maps monomorphically over the contents of `Outcome`.
10:38:05 × Guest85 quits (~Guest85@78.135.8.93) (Quit: Ping timeout (120 seconds))
10:44:51 alexherbo2 joins (~alexherbo@2a02-8440-341b-febc-249e-3732-ad8c-d761.rev.sfr.net)
10:45:24 Guest85 joins (~Guest85@78.135.8.93)
10:45:52 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:49:51 <SrPx> https://www.reddit.com/r/haskell/comments/1em8c9z/can_this_haskell_program_be_optimized/?
10:52:26 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
10:52:50 <Franciman> hi SrPx
10:52:56 <SrPx> hi^^
10:53:01 gmg joins (~user@user/gehmehgeh)
11:01:12 cfricke joins (~cfricke@user/cfricke)
11:01:37 CiaoSen joins (~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03)
11:05:34 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
11:05:52 gmg joins (~user@user/gehmehgeh)
11:09:47 danse-nr3 joins (~danse-nr3@user/danse-nr3)
11:18:21 × sawilagar quits (~sawilagar@user/sawilagar) (Remote host closed the connection)
11:18:47 sawilagar joins (~sawilagar@user/sawilagar)
11:25:36 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
11:31:03 × rncwnd quits (~quassel@2a01:4f8:221:27c6::1) (Ping timeout: 252 seconds)
11:40:05 rncwnd joins (~quassel@2a01:4f8:221:27c6::1)
11:45:05 wootehfoot joins (~wootehfoo@user/wootehfoot)
12:00:17 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 248 seconds)
12:00:47 × rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal)
12:07:09 sawilagar joins (~sawilagar@user/sawilagar)
12:13:43 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.9.1+deb1 - https://znc.in)
12:15:06 mhatta joins (~mhatta@www21123ui.sakura.ne.jp)
12:15:29 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
12:19:39 cheater joins (~Username@user/cheater)
12:20:03 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
12:23:26 Mateon1 joins (~Thunderbi@user/meow/Mateon1)
12:26:22 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer)
12:26:26 dans15093 joins (~danse-nr3@user/danse-nr3)
12:45:43 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
12:46:19 × dans15093 quits (~danse-nr3@user/danse-nr3) (Remote host closed the connection)
12:46:34 danse-nr3 joins (~danse-nr3@user/danse-nr3)
12:50:15 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:50:42 vgtw joins (~vgtw@user/vgtw)
12:50:53 × vgtw quits (~vgtw@user/vgtw) (Remote host closed the connection)
12:51:21 vgtw joins (~vgtw@user/vgtw)
13:01:36 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 265 seconds)
13:17:33 sawilagar joins (~sawilagar@user/sawilagar)
13:17:56 falafel joins (~falafel@2a0c:5a87:3104:4c01::bfe0)
13:20:48 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
13:21:47 euleritian joins (~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de)
13:24:58 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
13:26:26 <Mateon1> Hi, I have a question about the type system and Void. How exactly is the type system sound given you can absolutely pass around values typed Void given Haskell's laziness? You can't exactly construct them, but you can absolutely create thunks of type Void.
13:26:26 <Mateon1> Consider: omega = omega; :t omega -- omega :: t -- which you can specialize to Void. You can pass this value around, posing as arbitrary data, even pass it to "absurd", it's just that you can't evaluate the values materialized from it without hanging
13:26:37 <Mateon1> Are there any kind of articles, blog posts, or other resources on that topic?
13:28:44 <SrPx> is there any commonly used / known lib / algorithm / application / whatever that allows me to write a test of input/output pairs, and will return an Agda/Haskell/whatever function that passes that test? 10:16 AM for example, I write: `solve f in { f(00100011[]) = 1011[]; f(0100010100[]) = f(10111001[]) = 0100[] }` - and it outputs the recursive XOR function: `{ xor (0:0:xs) = 0:xor xs ; xor (0:1:xs) = 1:xor xs ; xor (1:0:xs) = 1:xor
13:28:44 <SrPx> xs ; xor (1:1:xs) = 0:xor xs }`
13:29:28 × Guest85 quits (~Guest85@78.135.8.93) (Quit: Client closed)
13:29:52 <danse-nr3> whew a cluster of queries are we famous already?
13:31:20 <Mateon1> SrPx: This is generally called program synthesis, and it's fairly limited in practice. I know of some research projects, not in Haskell, usually some kind of lisp, where this works by filling in holes in programs with certain types of expressions. I don't think what I've seen is generic enough to discover new recursive functions like that, though. You would have to write a proper fold yourself
13:32:35 <SrPx> I see, I was wondering if there is some known / go-to option that is generally recognized as the most viable, even though the problem itself is hard
13:33:38 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:34:03 <Mateon1> Also pretty sure the example you gave is for xnor, rather than xor
13:34:38 <SrPx> oops, fair enough
13:36:48 <Leary> SrPx: Some low hanging fruit: -O2; -A256m; `collapse (Mk(O|I) t) = Mk(O|I) <$> collapse t`.
13:37:38 <Leary> Also, I don't think those Monad and Applicative instances are compatible.
13:38:07 <SrPx> uh you're probably right, I didn't review it / don't use applicative / was forced to write one by GHC haha
13:38:25 <SrPx> Leary: did you test that? how much faster it got? you mean to write separate clauses right?
13:39:06 <danse-nr3> i'd say soundness comes after evaluation Mateon1. In fact, the system is not consistent because of bottom
13:39:37 <danse-nr3> *not sound
13:41:14 <Leary> SrPx: The flags made it about twice as fast. Replacing bind/return with fmap in the MkO/MkI cases was a small (maybe 5%) improvement.
13:44:13 Putonlalla1 is now known as Putonlalla
13:46:44 <Mateon1> SrPx: Does this by any chance come from the Victor Taelin tweet? Just came across some of them, using optimal evaluation seems like a promising improvement in program synthesis, one that would absolutely be publishable, but seems that Taelin wants to commercialize this for some reason? I really doubt this scales beyond toy functions
13:48:01 spew joins (~spew@201.141.102.132)
13:51:18 <SrPx> I'm Taelin lol
13:51:31 <danse-nr3> XD
13:51:56 <Mateon1> Oh lol
13:52:07 <SrPx> we don't want to commercialize this algorithm directly but yes I do believe we can use it as a component to train an AI that is guaranteed to generate correct code, and that we could commercialize one day (like ChatGPT etc.)
13:52:40 <Mateon1> Ah, some of the earlier tweets and the hiding of code was throwing me off
13:52:40 <SrPx> even if it only works for small functions, that is still extremely handy in a training loop where we attempt to find small functions that model a given dataset, and add to a loop
13:52:52 <SrPx> Mateon1: I need to :( it is a company
13:52:54 <Mateon1> I think it's more promising in compression, actually
13:53:11 <SrPx> well, some say intelligence is just compression
13:53:13 <Mateon1> I would love a PAQ variant with this as a primitive
13:53:31 <SrPx> noted!!!
13:54:55 <kuribas> Why do you need optimal evaluation for program generation? Couldn't you generate programs with dependent types, and check that?
13:55:16 <kuribas> Say, check that all functions are total.
13:56:15 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds)
13:56:23 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:02:36 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds)
14:03:05 sord937 joins (~sord937@gateway/tor-sasl/sord937)
14:03:46 × xstill_ quits (xstill@fimu/xstill) (Read error: Connection reset by peer)
14:04:43 xstill_ joins (xstill@fimu/xstill)
14:05:59 skyesoss joins (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
14:09:15 sadome joins (~sadome@user/sadome)
14:09:16 × sadome quits (~sadome@user/sadome) (Excess Flood)
14:10:12 × skyesoss quits (~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Ping timeout: 252 seconds)
14:12:02 sadome joins (~sadome@user/sadome)
14:12:03 × sadome quits (~sadome@user/sadome) (Excess Flood)
14:12:09 <Inst> Reading this, I'm curious if it's possible to make inquiries of a value's type's typeclass membership
14:12:11 <Inst> https://discourse.haskell.org/t/the-quest-to-completely-eradicate-string-awkwardness/10111/17
14:13:15 <kuribas> At runtime?
14:13:56 <Inst> let's say Text gets moved into base
14:14:02 <Inst> and a Pretty typeclass gets added
14:14:12 <Inst> how should ghci react, then?
14:14:34 <kuribas> well, reload ghci?
14:14:45 <Inst> I mean ghci prints the values you compute
14:14:58 sadome joins (~sadome@182.69.176.14)
14:14:58 × sadome quits (~sadome@182.69.176.14) (Changing host)
14:14:58 sadome joins (~sadome@user/sadome)
14:14:59 × sadome quits (~sadome@user/sadome) (Excess Flood)
14:15:08 <Inst> so now you have a legacy String type as well as a modern Text type
14:15:22 <kuribas> react to what exactly?
14:15:27 <kuribas> A literal string?
14:15:49 <Inst> say, you have a custom tree type, and you derive Pretty
14:16:03 <Inst> for whatever reason you don't derive / instance it into Show
14:16:41 <Inst> how should ghci display your tree, while also printing types that have a Show instance, but not a Pretty instance?
14:16:44 × spew quits (~spew@201.141.102.132) (Read error: Connection reset by peer)
14:17:58 <EvanR> this whole line of reasoning would be skipped if ghci had built-in debug view of values without having to derive Show or Pretty or whatever
14:17:58 sadomei joins (~sadomei@182.69.176.14)
14:17:59 × sadomei quits (~sadomei@182.69.176.14) (Excess Flood)
14:18:14 <EvanR> like some other languages
14:18:34 <EvanR> but it would violate avoid success at all costs
14:18:41 spew joins (~spew@201.141.102.132)
14:18:45 <Inst> :show bindings
14:18:45 <Inst> ?
14:19:25 <kuribas> a good debugger for haskell would be great.
14:19:32 <kuribas> One that is not modelled after imperative languages.
14:19:44 <kuribas> For example, let me choose which part of the tree to evaluate.
14:20:02 <danse-nr3> "having to derive"... use generic, here is your builtin
14:20:15 <EvanR> no
14:20:29 <Leary> Inst: https://downloads.haskell.org/ghc/latest/docs/users_guide/ghci.html#using-a-custom-interactive-printing-function
14:20:35 <EvanR> deriving Show or deriving Generic is the same barrier
14:20:50 <kuribas> EvanR: Show is great, for example I don't want to see the whole structure of a HashMap.
14:21:10 <Leary> It should just keep defaulting to Show, and people can change from Show to Pretty if they want to.
14:21:21 <EvanR> sure a way to customize the built in behavior would not harm anything
14:22:01 × spew quits (~spew@201.141.102.132) (Client Quit)
14:23:00 <EvanR> the situation with by default it shows an error message, and you go type or set up IDE autogeneration for deriving Show to see anything, is a "good enough" not a great
14:23:29 <EvanR> why is it like that, because it's good enough
14:23:41 <Leary> (there's no need for it to try to be too clever; uniform behaviour is better, and you can always use the class methods directly)
14:23:48 <kuribas> EvanR: Maybe always deriving Show?
14:24:05 <kuribas> If no instance exists.
14:24:11 <danse-nr3> how you customize then
14:24:15 <EvanR> I don't know if that's a good idea
14:24:28 <kuribas> danse-nr3: by explicit deriving.
14:24:35 <EvanR> because of type class global coherence stuff
14:24:46 <danse-nr3> how would you like your "builtin behaviour" to look like then EvanR?
14:24:55 <danse-nr3> (with custom)
14:25:05 <mauke> <Inst> how should ghci display your tree, while also printing types that have a Show instance, but not a Pretty instance? <- the same way it deals with IO values now?
14:25:24 <EvanR> if there's no Show instance, there's no Show instance so show doesn't work. But ghci still shows something, perhaps whatever deriving Show would have shown
14:25:27 <Inst> how does it deal with IO values now?
14:25:37 <EvanR> in response to danse-nr3
14:26:16 sawilagar joins (~sawilagar@user/sawilagar)
14:26:42 <mauke> brute force
14:27:19 <Inst> actually, right now, if I data Foo = Foo, then type pure Foo :: IO Foo, I get no return
14:27:49 <EvanR> yeah it treats IO actions magically
14:29:58 × CiaoSen quits (~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03) (Ping timeout: 245 seconds)
14:30:21 <mauke> try fmap length getLine
14:30:26 <Inst> iirc Haskell has no type unions, you can fake it with a sum type
14:30:30 <Inst> there's also no typeclass unions, right?
14:30:44 <Inst> which is what I'm really asking
14:30:47 <kuribas> EvanR: that would be nice.
14:31:07 <kuribas> Better than not show anything.
14:32:36 <zero> > 1/0
14:32:37 <lambdabot> Infinity
14:34:18 <Leary> There are apparently multiple levels of magic here; ghci prints the result of a `Show a => IO a`, unless `a` is `()` ... but for some reason that also generalises to anything of the form `data T = C`.
14:34:30 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
14:34:54 <danse-nr3> what's with 1/0 zero?
14:35:12 <zero> danse-nr3: making a point about Show
14:35:17 <zero> :t 1/0
14:35:18 <lambdabot> Fractional a => a
14:35:34 <EvanR> :t 1/(0::Double)
14:35:35 <lambdabot> Double
14:35:44 <Leary> Oh, no, I'm wrong -- it just applies to anything that doesn't have Show, which I forgot to derive.
14:35:45 <EvanR> Double has a Show instance already
14:36:15 <danse-nr3> oh that's clever zero
14:37:03 <EvanR> printing out the result happens after defaulting
14:37:17 <Inst> https://stackoverflow.com/questions/7198907/haskell-constraint-is-no-smaller-than-the-instance-head
14:37:21 <Inst> yeah that'd be an interesting question
14:37:30 <Inst> you could make some crappy overlapping instances with newtypes to hack around the problem
14:37:41 <EvanR> :|
14:37:52 <EvanR> which problem are you on now?
14:38:22 <Inst> the idea of using type unions to get it to attempt both Prelude.print and what essentially amounts to Pretty.print
14:39:00 <EvanR> or just take interacting pretty printing out of the type class system
14:39:04 <EvanR> interactive
14:40:35 <Inst> yeah but you'd also want to use print (implicitly in Trace.Debug) for other debugging purposes beyond ghci
14:40:40 <SrPx> kuribas: optimal evaluation isn't needed for program generation. I use it to optimize *searching* through a bazillion generated programs.
14:41:02 <EvanR> type classes get treated as a hammer and it works surprisingly well, but once the nails start looking like screws, don't try to turn the type class system into a part time screw driver
14:41:12 <kuribas> SrPr: right, that sounds neat!
14:41:27 <Inst> i mean it should work, right? I haven't tested it yet, and I'm about to go to sleep
14:41:50 <kuribas> SrPr: do you mean to search for the variant that typechecks a dependent type?
14:41:54 <SrPx> specifically, suppose you need to test the output of 1000000 slightly different functions, when applied to some input. you could try each function separately, but that'd take a lot of time. or you could use optimal evaluation to apply them all "at the same time", and all "identical intermediate computations" get "shared" / computed only once. so, this greatly speeds the search
14:42:19 <SrPx> it is still exponential (because there are exponentially many functions), but each function call becomes several times less expensive, which makes the whole thing slightly more viable
14:42:39 <EvanR> Inst, pretty printing and Debug.Trace, now you're in harrowing territory!
14:42:49 <kuribas> SrPr: like egraphs?
14:42:49 <SrPx> slightly as in, something that would take 100 years could be done in hours
14:43:26 <SrPx> kuribas: egraphs are amazing! not exactly related as they're more about caching equalities
14:43:36 lol_ joins (~lol@2603:3016:1e01:b980:dd5c:a977:63e6:618d)
14:43:43 <kuribas> SrPx: right. Can you do proof search with optimal evaluation?
14:43:44 <SrPx> while this is about sharing identical computations in different function calls
14:43:56 swamp_ joins (~zmt00@user/zmt00)
14:44:07 <SrPx> btw I do wonder if optimal evaluation could be applied to optimize egraphs
14:44:17 <SrPx> kuribas: yes the plan is to use this for proof search!
14:44:18 tcard_ joins (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a)
14:44:38 <SrPx> most proof search algorithms behind assistants like agda etc. just use a silly exhaustive enumeration, with a timeout
14:44:43 <SrPx> and they're already quite useful as is
14:44:48 hgolden__ joins (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7)
14:44:56 <SrPx> so, if that can be made 100x-10000x faster, yes that's nice right
14:45:21 × tcard quits (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Read error: Connection reset by peer)
14:45:30 <opqdonut> isn't discovering the sharing quite a bit of work as well?
14:45:46 <opqdonut> unless the variants have been generated so that they already share structure...
14:46:27 × euleritian quits (~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
14:46:45 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:47:01 Guest96 joins (~Guest96@2a01cb058fdd8800c599eccdcbbe5038.ipv6.abo.wanadoo.fr)
14:47:36 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 276 seconds)
14:47:36 × hgolden_ quits (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Ping timeout: 276 seconds)
14:47:36 × jcarpenter2 quits (~lol@2603:3016:1e01:b980:1aa:6452:eda4:91c6) (Ping timeout: 276 seconds)
14:47:41 <kuribas> SrPr: that would be amazing :)
14:48:12 <kuribas> SrPr: proof search is just program generation. Idris does that and has some algorithm to exclude trivial programs.
14:48:50 × Guest96 quits (~Guest96@2a01cb058fdd8800c599eccdcbbe5038.ipv6.abo.wanadoo.fr) (Client Quit)
14:51:45 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: nap)
14:52:10 cfricke joins (~cfricke@user/cfricke)
14:53:06 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
14:54:01 euleritian joins (~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de)
14:57:30 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
14:59:17 <SrPx> yes
15:00:23 × euleritian quits (~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
15:00:33 <EvanR> generate me a program of type MassivelyProfitableMMO
15:00:41 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:01:41 × tabemann_ quits (~tabemann@2600:1700:7990:24e0:c35:f6c5:f5d8:bf3) (Ping timeout: 248 seconds)
15:01:59 <Inst> type MassivelyProfitableMMO = IO ExitCode; main = exitSuccess;
15:03:32 <EvanR> that definition sucks
15:05:12 × hc quits (~hc@sing.esp.sg) (Ping timeout: 252 seconds)
15:07:09 hc joins (~hc@2407:d200:d002:43:229:85:195:3)
15:08:27 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
15:13:28 st_aldini joins (~Thunderbi@2605:a601:a07c:a000:3236:4a12:708b:5d23)
15:13:28 <Mateon1> You have to admit that this game would contain zero bugs, though
15:13:36 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
15:14:07 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:20:13 <int-e> words don't have that much power
15:23:16 <EvanR> because this is code and not magic? that there's yer problem
15:33:45 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
15:34:02 euleritian joins (~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de)
15:36:16 × euleritian quits (~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
15:36:38 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:37:03 danse-nr3 joins (~danse-nr3@user/danse-nr3)
15:42:46 <Inst> any haskell project can reach mvp status simply in one line: main = undefined
15:43:28 <haskellbridge> <mauke> But is it able to vie?
15:49:48 <Mateon1> Actually unfortunately not quite true that a trivial main would be bugfree. The haskell runtime itself has issues in some environments. I recall having some issues with GHC using some weird syscalls that didn't work on WSL, back when I still used windows
15:50:57 <Mateon1> As in, programs compiled with GHC didn't work at all, not that GHC wasn't working in that environment
15:55:23 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
15:57:38 <c_wraith> to be fair, that was WSL not actually providing the semantics linux kernels do
15:58:15 <c_wraith> (It couldn't allocate half a terabyte on program startup without actually enumerating it. Linux is happy to do that.)
16:00:26 × Inst quits (~Inst@user/Inst) (Ping timeout: 255 seconds)
16:04:09 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
16:04:47 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
16:06:01 × hgolden__ quits (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Remote host closed the connection)
16:07:46 hgolden joins (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7)
16:14:06 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
16:14:34 × alexherbo2 quits (~alexherbo@2a02-8440-341b-febc-249e-3732-ad8c-d761.rev.sfr.net) (Remote host closed the connection)
16:14:42 rvalue joins (~rvalue@user/rvalue)
16:15:14 × falafel quits (~falafel@2a0c:5a87:3104:4c01::bfe0) (Ping timeout: 260 seconds)
16:15:56 alexherbo2 joins (~alexherbo@2a02-8440-341b-febc-9d5d-6de9-06be-1722.rev.sfr.net)
16:19:16 × alexherbo2 quits (~alexherbo@2a02-8440-341b-febc-9d5d-6de9-06be-1722.rev.sfr.net) (Remote host closed the connection)
16:20:43 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
16:22:20 skyesoss joins (~Thunderbi@128.135.204.35)
16:22:34 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
16:26:36 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer)
16:26:42 dans49871 joins (~danse-nr3@user/danse-nr3)
16:27:48 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
16:29:26 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
16:30:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:34:24 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
16:36:17 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
16:43:13 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:47:54 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:48:09 <dans49871> is there a term to distinguish a type like Foo Char Int Bool from Foo { c :: Char, i :: Int, b :: Bool}?
16:48:29 sawilagar joins (~sawilagar@user/sawilagar)
16:49:08 <ncf> one has named fields/projections, the other doesn't
16:49:28 <dans49871> right, so ... fieldless?
16:49:43 × smalltalkman quits (uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
16:49:44 <dans49871> versus "fieldful"? ^^;
16:50:35 <EvanR> record type
16:50:43 <EvanR> well it's not a record type, but a record
16:50:46 <dans49871> versus?
16:51:05 <dans49871> nah they are both records aren't they
16:51:09 <EvanR> basic bitch ADT
16:51:21 <EvanR> records have field
16:52:06 <dans49871> "naked product"?
16:52:53 <dans49871> saw this "naked" being used for syntax elsewhere but i don't really dig it... i'll go with "fieldless"
16:53:10 <EvanR> agreed we should be able to write the type with empty string field names
16:53:18 <ncf> the report doesn't define records; only record syntax
16:53:20 <EvanR> Foo { :: Char, :: Int, :: Bool }
16:53:36 <ncf> and calls the projections "field labels"
16:53:56 <EvanR> it would be nice if fields and projection functions were not conflated
16:54:03 <dans49871> huh we are drifting... well i'll call it "fieldless"
16:54:40 <dans49871> in my case, a "fieldless sum", as in: data W = WI Int Int | WB Bool
16:55:03 <dans49871> it's a poor term but i doubt we can come with anything better
16:57:36 × dans49871 quits (~danse-nr3@user/danse-nr3) (Quit: ooops)
17:00:37 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 248 seconds)
17:02:26 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
17:05:56 × mzg quits (mzg@abusers.hu) (Ping timeout: 244 seconds)
17:06:52 ft joins (~ft@p4fc2aa15.dip0.t-ipconnect.de)
17:07:34 mzg joins (mzg@abusers.hu)
17:08:25 <EvanR> it's an ADT
17:08:25 × haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Read error: Connection reset by peer)
17:08:56 <EvanR> blah
17:10:51 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
17:14:27 haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com)
17:14:27 ChanServ sets mode +v haskellbridge
17:19:23 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
17:20:56 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:31:46 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
17:33:20 Square joins (~Square@user/square)
17:35:14 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 272 seconds)
17:36:44 machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net)
17:46:04 × machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 260 seconds)
17:47:40 machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net)
17:49:06 × krei-se quits (~krei-se@p5085d903.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
17:49:47 × amjoseph quits (~amjoseph@static-198-44-128-146.cust.tzulo.com) (Ping timeout: 255 seconds)
17:50:34 krei-se joins (~krei-se@p57af2b6c.dip0.t-ipconnect.de)
17:51:46 × TMA quits (tma@twin.jikos.cz) (Ping timeout: 248 seconds)
18:03:33 danse-nr3 joins (~danse-nr3@user/danse-nr3)
18:09:11 shoggouth joins (uid607148@user/shoggouth)
18:10:18 amjoseph joins (~amjoseph@static-198-44-128-146.cust.tzulo.com)
18:10:56 TMA joins (tma@twin.jikos.cz)
18:15:41 motherfsck joins (~motherfsc@user/motherfsck)
18:18:22 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:20:44 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Quit: so long)
18:40:38 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:56:12 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:56:45 × lystra quits (~lystra@208.59.105.41) (Remote host closed the connection)
18:57:02 Batzy joins (~quassel@user/batzy)
19:02:11 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
19:04:21 dawkrish joins (~dawkrish@2401:4900:883d:f037:209b:6d5:7ef5:8a8f)
19:05:30 <dawkrish> hi, I am new here
19:06:43 <EvanR> hi
19:09:07 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
19:09:50 sawilagar joins (~sawilagar@user/sawilagar)
19:15:53 × terrorjack quits (~terrorjac@static.163.82.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
19:16:59 terrorjack joins (~terrorjac@2a01:4f8:121:32e8::)
19:21:25 slac21088 joins (~slack1256@2803:c600:5111:8029:469f:21dd:e308:1389)
19:22:28 × slack1256 quits (~slack1256@2803:c600:5111:80cb:a1ed:c7bd:aa66:b480) (Ping timeout: 265 seconds)
19:25:25 × dawkrish quits (~dawkrish@2401:4900:883d:f037:209b:6d5:7ef5:8a8f) (Ping timeout: 256 seconds)
19:27:12 <monochrom> I believe that we need no term for this.
19:28:22 × dsrt^ quits (~dsrt@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
19:34:30 <jle`> maybe positional or recordless
19:34:34 <jle`> * non-record
19:39:05 × lol_ quits (~lol@2603:3016:1e01:b980:dd5c:a977:63e6:618d) (Ping timeout: 252 seconds)
19:39:08 <EvanR> what about ADTs which aren't GADTs, or ADTs which aren't existential
19:39:19 <EvanR> negative jargon
19:40:26 <EvanR> ADTs which are against everything, perhaps contrarian ADTs
19:40:55 danse-nr3 joins (~danse-nr3@user/danse-nr3)
19:41:53 <jle`> if you told me that the constructor had positional arguments i think it'd understand
19:42:10 <jle`> so it's more like a positive ascription in that case
19:42:17 <jle`> but then i guess you can also use records positionally
19:43:52 <jle`> it's a slow day and this problem has my full attention
19:44:23 <danse-nr3> hmm... "positional"! Makes a lot of sense. Thanks jle`
19:45:42 × ThePenguin quits (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection)
19:45:48 <jle`> i guess it's like a parallel between positional arguments vs. named arguemnts in function syntax for other languages. but definitely not commonly used to refer to ADTs heh
19:46:17 ThePenguin joins (~ThePengui@cust-95-80-24-166.csbnet.se)
19:50:24 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
19:51:14 jcarpenter2 joins (~lol@2603:3016:1e01:b980:dd5c:a977:63e6:618d)
19:53:59 <EvanR> record syntax types are not positional?
19:54:12 <danse-nr3> well they /also/ are
19:54:18 <EvanR> positional seems to be more how you construct and pattern match than about the type itself
19:54:34 <monochrom> I guess it's a slow day and a worthless question has everything's full attention.
19:54:34 <EvanR> assuming you don't know how it's implemented
19:54:57 <danse-nr3> yeah i'm satisfied with what we've got no reason to delve more
19:55:00 <monochrom> Is an ADT a GADT?
19:57:31 <Franciman> hi monochrom and EvanR did you read the paper about the parallel complexity of simple logic programs?
19:57:39 <monochrom> No.
19:57:57 <Franciman> rip
19:57:59 <Franciman> ok thank you
19:58:06 <EvanR> no but that sounds interesting
19:59:22 <Franciman> not according to monochrom
19:59:33 <danse-nr3> they just haven't read it
20:01:50 × machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 252 seconds)
20:02:20 <Franciman> no danse-nr3 this was a test
20:02:24 <Franciman> and everything went as expecte
20:02:26 <Franciman> expected
20:02:41 <danse-nr3> huh as you wish
20:03:08 <zfnmxt> Is there a .nix file anywhere to install lambdabot?
20:04:09 <Franciman> there are people in this community that no matter how hard you try, have decided to have an opinion on you
20:04:12 <Franciman> and will never change it
20:04:17 <Franciman> so let it be this weay
20:04:18 <Franciman> good riddance
20:04:28 <danse-nr3> ?
20:05:05 <Franciman> i give up
20:05:28 <EvanR> > cake
20:05:29 <lambdabot> error:
20:05:29 <lambdabot> • Variable not in scope: cake
20:05:30 <lambdabot> • Perhaps you meant one of these:
20:05:36 <EvanR> test failed
20:05:37 <danse-nr3> what's up Franciman, i'm completely lost
20:07:58 <danse-nr3> dunno zfnmxt ... if there was it would be in its repo i guess?
20:09:20 <zfnmxt> danse-nr3: Yeah, didn't see anything. It has some runtime dependencies that fail if you just install it the usual way (related to hint or mueval or something); was hoping someone set it up on their nix server somewhere and could just give me a working config.
20:16:04 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 244 seconds)
20:16:25 sawilagar joins (~sawilagar@user/sawilagar)
20:26:35 dans53522 joins (~danse-nr3@user/danse-nr3)
20:28:42 × danse-nr3 quits (~danse-nr3@user/danse-nr3) (Ping timeout: 252 seconds)
20:29:09 × skyesoss quits (~Thunderbi@128.135.204.35) (Ping timeout: 248 seconds)
20:40:34 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:44:01 × ubert quits (~Thunderbi@178.115.47.16.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
20:48:20 × dans53522 quits (~danse-nr3@user/danse-nr3) (Quit: goood night)
20:59:56 × michalz quits (~michalz@185.246.207.217) (Remote host closed the connection)
21:00:33 cfricke joins (~cfricke@user/cfricke)
21:05:51 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:08:39 × hueso quits (~root@user/hueso) (Ping timeout: 260 seconds)
21:11:21 hueso joins (~root@user/hueso)
21:13:35 machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net)
21:32:33 × Square quits (~Square@user/square) (Ping timeout: 276 seconds)
21:44:08 × hueso quits (~root@user/hueso) (Ping timeout: 252 seconds)
21:45:13 hueso joins (~root@user/hueso)
21:48:01 <glguy> data A = B { _ :: C }
21:48:21 <glguy> We have a convention for explicitly not providing a name
21:48:39 <EvanR> dude
21:48:46 <EvanR> er, guy
21:48:54 <glguy> Maybe someone said that already, I didn't read everything
21:49:14 <EvanR> @define data A = B { _ :: Char, _ :: Double }
21:49:14 <lambdabot> Parse failed: Illegal special name
21:49:15 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds)
21:49:21 <EvanR> @define data A = B { _ :: Char }
21:49:21 <lambdabot> Parse failed: Illegal special name
21:49:24 <EvanR> ILLEGAL
21:49:28 <glguy> Doesn't with, yet. :)
21:49:36 <glguy> Work*
21:54:30 wroathe joins (~wroathe@c-66-41-76-89.hsd1.mn.comcast.net)
21:54:30 × wroathe quits (~wroathe@c-66-41-76-89.hsd1.mn.comcast.net) (Changing host)
21:54:30 wroathe joins (~wroathe@user/wroathe)
21:58:26 pavonia joins (~user@user/siracusa)
22:04:27 JuanDaugherty joins (~juan@user/JuanDaugherty)
22:10:33 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
22:11:00 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
22:17:10 × terrorjack quits (~terrorjac@2a01:4f8:121:32e8::) (Read error: Connection reset by peer)
22:17:44 terrorjack joins (~terrorjac@2a01:4f8:121:32e8::)
22:18:29 × terrorjack quits (~terrorjac@2a01:4f8:121:32e8::) (Read error: Connection reset by peer)
22:19:19 terrorjack4 joins (~terrorjac@static.163.82.63.178.clients.your-server.de)
22:21:47 Sgeo joins (~Sgeo@user/sgeo)
22:23:21 <geekosaur> did you want @let?
22:25:12 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
22:25:15 neuroevolutus joins (~user@2a02:6ea0:d20c:3::e00e)
22:25:27 falafel joins (~falafel@2a0c:5a87:3104:4c01::bfe0)
22:27:30 × terrorjack4 quits (~terrorjac@static.163.82.63.178.clients.your-server.de) (Read error: Connection reset by peer)
22:28:02 terrorjack4 joins (~terrorjac@static.163.82.63.178.clients.your-server.de)
22:31:13 × terrorjack4 quits (~terrorjac@static.163.82.63.178.clients.your-server.de) (Read error: Connection reset by peer)
22:33:24 alexherbo2 joins (~alexherbo@2a02-8440-341b-febc-0428-4304-42c4-f08b.rev.sfr.net)
22:35:19 × neuroevolutus quits (~user@2a02:6ea0:d20c:3::e00e) (Ping timeout: 265 seconds)
22:37:19 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 264 seconds)
22:44:45 <monochrom> Yeah, but I have tried my own ghci too, and it's a syntax error.
22:45:18 <monochrom> It's a hypothetical syntax that one day someone may pick up as a good idea. >:)
22:46:25 <geekosaur> oh, missed that part
22:49:05 terrorjack4 joins (~terrorjac@static.163.82.63.178.clients.your-server.de)
23:03:05 acidjnk_new joins (~acidjnk@p200300d6e72cfb84d8a1b9ef4193dab0.dip0.t-ipconnect.de)
23:03:43 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 245 seconds)
23:04:25 × acidjnk quits (~acidjnk@p200300d6e72cfb848054de8284f67264.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
23:06:47 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
23:13:21 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
23:15:43 × alexherbo2 quits (~alexherbo@2a02-8440-341b-febc-0428-4304-42c4-f08b.rev.sfr.net) (Remote host closed the connection)
23:16:45 alexherbo2 joins (~alexherbo@2a02-8440-341b-febc-09b6-12ec-114f-6f83.rev.sfr.net)
23:20:31 × alexherbo2 quits (~alexherbo@2a02-8440-341b-febc-09b6-12ec-114f-6f83.rev.sfr.net) (Remote host closed the connection)
23:20:47 malinoskj290645 joins (~malinoskj@204.191-pool-nas4-sc.sccoast.net)
23:21:57 malinoskj290645 parts (~malinoskj@204.191-pool-nas4-sc.sccoast.net) ()
23:25:09 × acidjnk_new quits (~acidjnk@p200300d6e72cfb84d8a1b9ef4193dab0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:34:52 × m5zs7k quits (aquares@web10.mydevil.net) (Quit: m5zs7k)
23:38:27 m5zs7k joins (aquares@web10.mydevil.net)
23:41:10 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
23:50:55 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)

All times are in UTC on 2024-08-07.