Home liberachat/#haskell: Logs Calendar

Logs on 2024-03-26 (liberachat/#haskell)

00:02:40 caconym7 joins (~caconym@user/caconym)
00:04:15 × caconym quits (~caconym@user/caconym) (Ping timeout: 260 seconds)
00:04:15 caconym7 is now known as caconym
00:04:36 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
00:09:19 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
00:10:32 × tushar quits (~tushar@103.46.201.22) (Ping timeout: 260 seconds)
00:14:59 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 260 seconds)
00:22:32 rvalue joins (~rvalue@user/rvalue)
00:33:14 Lycurgus joins (~georg@user/Lycurgus)
00:33:23 × [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
00:41:50 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
00:45:58 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 246 seconds)
00:47:24 × mima quits (~mmh@aftr-62-216-211-241.dynamic.mnet-online.de) (Ping timeout: 260 seconds)
00:53:32 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
00:54:32 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:57:55 drdo joins (~drdo@bl5-29-74.dsl.telepac.pt)
01:09:07 × shapr quits (~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
01:12:48 Square joins (~Square4@user/square)
01:19:21 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
01:29:34 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
01:30:44 califax_ joins (~califax@user/califx)
01:30:46 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:32:01 califax_ is now known as califax
01:35:41 × forell_ quits (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 240 seconds)
01:40:26 cheater joins (~Username@user/cheater)
01:41:30 sprout_ joins (~quassel@2a02-a448-3a80-0-e595-ce43-46c0-8c8c.fixed6.kpn.net)
01:41:41 × sprout quits (~quassel@2a02-a448-3a80-0-355e-e5b2-f32d-a9c5.fixed6.kpn.net) (Ping timeout: 240 seconds)
01:42:34 notzmv joins (~daniel@user/notzmv)
01:45:18 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
01:47:47 sprout_ is now known as sprout
01:47:55 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
01:48:28 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
01:49:10 × petrichor quits (~znc-user@user/petrichor) (Ping timeout: 268 seconds)
01:50:21 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 256 seconds)
01:53:41 petrichor joins (~znc-user@user/petrichor)
02:02:59 × petrichor quits (~znc-user@user/petrichor) (Ping timeout: 264 seconds)
02:03:21 petrichor joins (~znc-user@user/petrichor)
02:10:28 × xff0x quits (~xff0x@2405:6580:b080:900:3f35:2895:6fd4:d2c6) (Ping timeout: 260 seconds)
02:14:59 × mulk quits (~mulk@p5b112c85.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
02:15:15 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
02:16:01 mulk joins (~mulk@p5b2dc4f3.dip0.t-ipconnect.de)
02:16:57 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
02:17:58 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
02:18:31 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
02:18:57 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
02:19:09 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
02:23:16 × otto_s quits (~user@p4ff27516.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
02:24:09 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Read error: Connection reset by peer)
02:24:59 otto_s joins (~user@p4ff27cae.dip0.t-ipconnect.de)
02:25:01 [Leary] joins (~Leary]@user/Leary/x-0910699)
02:27:26 hammond__ is now known as h_______________
02:27:59 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
02:28:11 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
02:36:08 × liskin quits (~liskin@xmonad/liskin) (Ping timeout: 260 seconds)
02:36:27 liskin joins (~liskin@xmonad/liskin)
02:40:57 × tertek quits (~tertek@user/tertek) (Quit: %quit%)
02:41:18 tertek joins (~tertek@user/tertek)
02:51:05 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 272 seconds)
02:56:04 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:21:32 forell joins (~forell@user/forell)
03:28:30 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
03:30:59 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
03:36:48 × forell quits (~forell@user/forell) (Ping timeout: 260 seconds)
03:41:42 × td__ quits (~td@i53870914.versanet.de) (Ping timeout: 268 seconds)
03:43:01 td_ joins (~td@i5387093F.versanet.de)
03:43:26 forell joins (~forell@user/forell)
03:45:00 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
03:48:49 × iteratee quits (~kyle@162.218.222.207) (Read error: Connection reset by peer)
03:49:20 iteratee joins (~kyle@162.218.222.207)
03:51:45 × mei quits (~mei@user/mei) (Ping timeout: 256 seconds)
04:01:49 igemnace joins (~ian@user/igemnace)
04:03:50 mei joins (~mei@user/mei)
04:05:05 aforemny joins (~aforemny@2001:9e8:6cfa:3600:3f10:37b1:467:310c)
04:05:56 × aforemny_ quits (~aforemny@i59F516FA.versanet.de) (Ping timeout: 252 seconds)
04:07:52 rosco joins (~rosco@2402:b400:4460:fc63:80a6:a666:aa55:2612)
04:10:52 × forell quits (~forell@user/forell) (Quit: ZNC - https://znc.in)
04:11:39 forell joins (~forell@user/forell)
04:14:58 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
04:15:58 × dsmith quits (~dsmith@024-029-202-168.inf.spectrum.com) (Ping timeout: 246 seconds)
04:16:10 ec joins (~ec@gateway/tor-sasl/ec)
04:18:33 Pixi` joins (~Pixi@user/pixi)
04:18:45 dsmith joins (~dsmith@024-029-202-168.inf.spectrum.com)
04:21:05 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
04:21:42 × Pixi quits (~Pixi@user/pixi) (Ping timeout: 256 seconds)
04:24:41 falafel joins (~falafel@2607:fb91:8aa:877b:62d7:31a2:4645:9cb9)
04:29:19 × falafel quits (~falafel@2607:fb91:8aa:877b:62d7:31a2:4645:9cb9) (Ping timeout: 260 seconds)
04:35:52 × adium quits (adium@user/adium) (Remote host closed the connection)
04:36:45 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
04:38:04 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:41:02 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
04:41:41 pastly joins (~pastly@gateway/tor-sasl/pastly)
04:41:55 × mmhat quits (~mmh@p200300f1c706a298ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1)
04:47:34 tushar joins (~tushar@103.46.201.22)
04:52:45 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
04:53:11 pastly joins (~pastly@gateway/tor-sasl/pastly)
04:59:48 × califax quits (~califax@user/califx) (Read error: Connection reset by peer)
04:59:48 × ec quits (~ec@gateway/tor-sasl/ec) (Read error: Connection reset by peer)
04:59:48 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
05:00:14 qqq joins (~qqq@92.43.167.61)
05:00:17 califax joins (~califax@user/califx)
05:00:18 ec joins (~ec@gateway/tor-sasl/ec)
05:00:51 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:01:28 × aforemny quits (~aforemny@2001:9e8:6cfa:3600:3f10:37b1:467:310c) (Ping timeout: 246 seconds)
05:01:46 aforemny joins (~aforemny@i59F516FD.versanet.de)
05:02:22 Core7852 joins (~rosco@183.171.72.200)
05:02:30 × rosco quits (~rosco@2402:b400:4460:fc63:80a6:a666:aa55:2612) (Ping timeout: 256 seconds)
05:02:47 <mauke> > 1.1.1.1.1.1.1.1.1.1.1.1 + 2.3 $ ()
05:02:48 <lambdabot> error:
05:02:48 <lambdabot> • Could not deduce (Fractional (b0 -> c))
05:02:48 <lambdabot> (maybe you haven't applied a function to enough arguments?)
05:04:56 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
05:11:52 adium joins (adium@user/adium)
05:16:08 × Me-me quits (~me-me@user/me-me) (Remote host closed the connection)
05:16:35 Me-me joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
05:19:25 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
05:19:45 pastly joins (~pastly@gateway/tor-sasl/pastly)
05:43:05 hallucinagen joins (~prodmezha@123.63.203.210)
05:53:34 × Me-me quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Changing host)
05:53:34 Me-me joins (~me-me@user/me-me)
05:58:10 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
05:58:17 euleritian joins (~euleritia@77.22.252.56)
06:02:43 rosco joins (~rosco@180.75.255.16)
06:07:58 michalz joins (~michalz@185.246.207.221)
06:13:14 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
06:16:11 × Square quits (~Square4@user/square) (Ping timeout: 260 seconds)
06:22:56 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
06:23:38 × tushar quits (~tushar@103.46.201.22) (Quit: WeeChat 4.2.1)
06:29:29 codolio joins (~dolio@130.44.134.54)
06:29:46 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 256 seconds)
06:30:00 euleritian joins (~euleritia@dynamic-176-006-195-045.176.6.pool.telefonica.de)
06:30:35 × dolio quits (~dolio@130.44.134.54) (Ping timeout: 264 seconds)
06:30:41 × caconym quits (~caconym@user/caconym) (Quit: bye)
06:31:02 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
06:32:35 caconym joins (~caconym@user/caconym)
06:36:31 zetef joins (~quassel@5.2.182.99)
06:37:52 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:39:41 × rosco quits (~rosco@180.75.255.16) (Ping timeout: 240 seconds)
06:40:22 × codolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
06:40:30 dolio joins (~dolio@130.44.134.54)
06:43:33 acidjnk_new joins (~acidjnk@p200300d6e708d544f8395f3770d8e9d9.dip0.t-ipconnect.de)
06:45:20 <probie> % instance (a ~ String, b ~ String) => Num (a -> b) where { fromInteger = (++) . show ; f + g = \x -> f x ++ g x }
06:45:20 <yahb2> <interactive>:13:10: error: ; • Illegal equational constraint a ~ String ; (Use GADTs or TypeFamilies to permit this) ; • In the instance declaration for ‘Num (a -> b)’
06:45:27 × michalz quits (~michalz@185.246.207.221) (Quit: ZNC 1.8.2 - https://znc.in)
06:45:33 <probie> % :set -XGADTs
06:45:33 <yahb2> <no output>
06:45:39 <probie> % instance (a ~ String, b ~ String) => Num (a -> b) where { fromInteger = (++) . show ; f + g = \x -> f x ++ g x }
06:45:39 <yahb2> <interactive>:17:10: warning: [-Wmissing-methods] ; • No explicit implementation for ; ‘*’, ‘abs’, ‘signum’, and (either ‘negate’ or ‘-’) ; • In the instance declaration for ‘Num (a...
06:45:54 <probie> % instance (a ~ String, b ~ String) => Fractional (a -> b) where { fromRational = (++) . show }
06:45:54 <yahb2> <interactive>:19:10: warning: [-Wmissing-methods] ; • No explicit implementation for ; either ‘recip’ or ‘/’ ; • In the instance declaration for ‘Fractional (a -> b)’
06:46:05 <probie> % 1.1.1.1.1.1.1.1.1.1.1.1 + 2.3 $ ""
06:46:05 <yahb2> "11 % 1011 % 1011 % 1011 % 1011 % 1011 % 1023 % 10"
06:48:36 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 255 seconds)
06:50:12 michalz joins (~michalz@185.246.207.215)
06:51:08 CiaoSen joins (~Jura@2a05:5800:2bf:c200:e6b9:7aff:fe80:3d03)
06:51:31 × euleritian quits (~euleritia@dynamic-176-006-195-045.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
06:51:48 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
06:58:01 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
06:58:29 euleritian joins (~euleritia@dynamic-176-006-195-045.176.6.pool.telefonica.de)
06:59:55 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:13:16 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:13:19 × JimL quits (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
07:13:38 JimL joins (~quassel@89.162.16.26)
07:17:43 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
07:18:05 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:20:23 × JimL quits (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
07:20:40 JimL joins (~quassel@89.162.16.26)
07:22:30 × JimL quits (~quassel@89.162.16.26) (Client Quit)
07:22:48 JimL joins (~quassel@89.162.16.26)
07:24:41 × JimL quits (~quassel@89.162.16.26) (Client Quit)
07:25:00 JimL joins (~quassel@89.162.16.26)
07:26:56 × JimL quits (~quassel@89.162.16.26) (Client Quit)
07:27:15 JimL joins (~quassel@89.162.16.26)
07:29:10 × JimL quits (~quassel@89.162.16.26) (Client Quit)
07:29:28 JimL joins (~quassel@89.162.16.26)
07:45:17 × hiredman quits (~hiredman@frontier1.downey.family) (Ping timeout: 240 seconds)
07:50:43 × hueso quits (~root@user/hueso) (Ping timeout: 255 seconds)
07:52:26 hiredman joins (~hiredman@frontier1.downey.family)
07:53:18 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
07:57:42 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:57:46 triceraptor joins (~prodmezha@115.248.21.178)
08:00:40 oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
08:01:17 meritamen joins (~meritamen@user/meritamen)
08:01:24 × hallucinagen quits (~prodmezha@123.63.203.210) (Ping timeout: 260 seconds)
08:01:42 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
08:02:45 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
08:05:13 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
08:06:13 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
08:10:11 × euleritian quits (~euleritia@dynamic-176-006-195-045.176.6.pool.telefonica.de) (Ping timeout: 264 seconds)
08:10:50 CrunchyFlakes joins (~CrunchyFl@146.52.130.128)
08:17:18 × triceraptor quits (~prodmezha@115.248.21.178) (Read error: Connection reset by peer)
08:18:01 hallucinagen joins (~prodmezha@123.63.203.210)
08:18:15 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
08:20:19 × CrunchyFlakes quits (~CrunchyFl@146.52.130.128) (Ping timeout: 260 seconds)
08:20:47 zetef joins (~quassel@5.2.182.99)
08:21:21 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
08:24:19 danse-nr3 joins (~danse@151.37.211.199)
08:27:47 × hallucinagen quits (~prodmezha@123.63.203.210) (Ping timeout: 260 seconds)
08:30:19 mima joins (~mmh@aftr-62-216-211-42.dynamic.mnet-online.de)
08:30:20 × danse-nr3 quits (~danse@151.37.211.199) (Ping timeout: 260 seconds)
08:36:43 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
08:36:53 danse-nr3 joins (~danse@151.37.211.199)
08:37:45 Domitar joins (~Domitar@193.198.16.218)
08:37:53 × Domitar quits (~Domitar@193.198.16.218) (Remote host closed the connection)
08:39:36 × meritamen quits (~meritamen@user/meritamen) (Quit: Client closed)
08:42:00 × mima quits (~mmh@aftr-62-216-211-42.dynamic.mnet-online.de) (Ping timeout: 260 seconds)
08:49:32 <Inst> EvanR: Real World is ultimately built on magic, but the edifice is a consistent and logical system
08:49:43 hallucinagen joins (~prodmezha@123.63.203.210)
08:51:48 <Inst> grrr, still can't figure out how to get keys from a set / map
08:51:51 <Inst> via lens
08:52:32 tomsmeding . o O ( Data.Set.elems :: Set a -> [a] )
08:52:49 × tzh_ quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
08:55:48 <Inst> yeah but I'm trying to avoid the containers interface because it's not polymorphic enough for me :(
08:57:58 <ncf> > Set.fromList [0, 2, 4] ^.. folded
08:58:00 <lambdabot> error:
08:58:00 <lambdabot> Not in scope: ‘Set.fromList’
08:58:00 <lambdabot> Perhaps you meant one of these:
09:00:29 <danse-nr3> seems a bit silly to be honest. Different data structures provide different operations
09:00:38 <ncf> and for maps, > Map.fromList [(0, ()), (2, ()), (4, ())] ^.. folded . asIndex
09:01:12 <danse-nr3> :t folded
09:01:13 <lambdabot> (Indexable Int p, Contravariant f1, Foldable f2, Applicative f1) => p a (f1 a) -> f2 a -> f1 (f2 a)
09:01:19 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
09:01:20 <danse-nr3> :t (^..)
09:01:21 <lambdabot> s -> Getting (Endo [a]) s a -> [a]
09:02:04 <danse-nr3> (also, good morning from this part of the world)
09:05:36 <Inst> thanks
09:05:42 <Inst> i still can't read lens type sigs
09:05:50 <Inst> i just know they work and if i get a type error i screwed up somewhere
09:05:50 <ncf> good thing you don't need to
09:06:46 <danse-nr3> i can't read them either ... was trying because the other day they were tamer so i hoped it was one of those cases
09:06:51 <danse-nr3> maybe ...
09:07:04 <danse-nr3> :t (^.. folded)
09:07:05 <lambdabot> Foldable f => f a -> [a]
09:07:44 <ncf> the actual type signatures you should read are in the haddocks
09:07:46 <ncf> folded :: Foldable f => IndexedFold Int (f a) a
09:10:09 <Inst> yeah but folded is basically equiv to fromList here :(
09:11:03 <ncf> well what else do you want
09:11:58 <Inst> foo = S.fromList [1..10]
09:12:11 <Inst> foo ?? [???} <===> 3
09:12:27 <ncf> what
09:12:57 <Inst> I want lens operations to extract the 3rd (2nd index) element from the Set Int foo
09:13:35 <Inst> foo ^.. folded & (!! 2) works
09:14:10 <danse-nr3> Set Int foo?
09:14:26 <danse-nr3> oh i see what you mean
09:14:41 <ncf> that's not really an operation Set provides...
09:15:27 <danse-nr3> yeah i never think of sets as anything ordered
09:15:32 hueso joins (~root@user/hueso)
09:17:01 <ncf> but if you insist
09:17:19 <ncf> Set.fromList [1..10] ^? folded . index 2
09:18:18 igemnace joins (~ian@user/igemnace)
09:21:34 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:22:48 gehmehgeh joins (~user@user/gehmehgeh)
09:25:15 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:25:30 × danse-nr3 quits (~danse@151.37.211.199) (Ping timeout: 268 seconds)
09:26:35 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 260 seconds)
09:27:15 <Inst> i love you so much <3
09:27:16 <Inst> thanks
09:27:23 <Inst> ehhh, it still seems ridiculous, but what can I do :(
09:29:52 danse-nr3 joins (~danse@151.37.211.199)
09:30:21 mima joins (~mmh@aftr-62-216-211-42.dynamic.mnet-online.de)
09:32:52 × danse-nr3 quits (~danse@151.37.211.199) (Remote host closed the connection)
09:34:34 danse-nr3 joins (~danse@151.37.211.199)
09:41:21 zetef joins (~quassel@5.2.182.99)
09:50:02 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
09:51:02 gehmehgeh joins (~user@user/gehmehgeh)
09:56:09 <tomsmeding> the Set data structure does not store sizes of subtrees
09:56:14 <tomsmeding> so it cannot provide log-time indexing
09:56:29 <tomsmeding> Inst: so anything you'd do is linear-time, so you might as well go through toList
09:57:01 <tomsmeding> as notably distinct from Seq from Data.Sequence, which does provide log-time indexing
09:57:23 <tomsmeding> as danse-nr3 said, different data structures provide different operations
09:58:12 <tomsmeding> er wait
09:58:37 <tomsmeding> it does
09:58:40 <Inst> iirc Set is weird
09:58:49 <Inst> it's a balanced binary tree that stores its own size
09:58:57 <tomsmeding> :t Data.Set.elemAt
09:58:58 <lambdabot> Int -> S.Set a -> a
09:59:07 tomsmeding was mistaken
09:59:38 <tomsmeding> that's not a very weird data structure, but I remembered incorrectly
09:59:46 <Inst> maybe we just need better lenses for containers, some additions to Lens and Optics
09:59:50 <tomsmeding> (the size is use for balancing as well)
09:59:59 <tomsmeding> you can be the one to write them :)
10:00:27 <Inst> right now, my goal is to get the NixOS server set up, then to put out a prototype site, working on postgresql / servant / blaze or lucid stack
10:00:28 <ncf> no please don't write lenses for accessing the internal structure of Set
10:00:31 × hallucinagen quits (~prodmezha@123.63.203.210) (Ping timeout: 256 seconds)
10:00:54 <Inst> i just want to be able to access the key name, okay?
10:01:04 <tomsmeding> but indeed it's a bit strange that you'd want the _index_ of a value in a Set
10:01:16 <Inst> it's not exactly that I need an index
10:01:28 <Inst> when I use mySet ^. ix 3, I just get Just ()
10:01:28 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
10:01:34 <tomsmeding> where does the 3 come from
10:01:38 <Inst> it's arbitrary
10:01:41 × hiredman quits (~hiredman@frontier1.downey.family) (Ping timeout: 240 seconds)
10:01:47 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 264 seconds)
10:01:48 <tomsmeding> why do you need this expression
10:01:53 <tomsmeding> what's the X problem :p
10:01:55 <ncf> sets are not for indexing into
10:02:25 <Inst> iirc, sets have indexing functions in their lib
10:02:33 <tomsmeding> they do, but why are you using them
10:02:49 <tomsmeding> what thing are you implementing that you need to access elements in a set by their index
10:02:55 <Inst> the goal is to not use the containers interface and just use the lens interface to provide a polymorphic way to work with data structures in haskell
10:02:55 × hueso quits (~root@user/hueso) (Ping timeout: 256 seconds)
10:03:19 <tomsmeding> well accessing elements by their index smells of not using a set like it should be used :p
10:03:23 <Inst> because the containers import Data.Set qualified as Bleh shibboleth is horrible
10:03:36 <tomsmeding> that's the problem with data structures, they don't all have precisely the same interface
10:03:43 <Inst> I'm just floating a hypothesis
10:03:44 <tomsmeding> that's just the module system being annoying
10:03:52 <Inst> does it make more sense to teach Haskell with lens instead of monads? ;3
10:04:05 <tomsmeding> how does lens subsume monads
10:04:31 <tomsmeding> similar to how you don't want to index into a [] list
10:04:34 <Inst> insofar as the ideal is that after Haskell lessons, people get into practical programming, and monads are 80% a solved problem
10:04:45 <Inst> at least it's log n indexing!
10:04:49 <tomsmeding> you can, it's quite defineable, and lenses let you do it, but if you're indexing into a list you're probably doing the wrong thing
10:04:56 <ncf> you still haven't answered the question
10:05:03 <Inst> which one?
10:05:09 <ncf> why do you need to index into a Set
10:05:14 <tomsmeding> why don't you want to use a set like you're supposed to use it :p
10:05:24 <Inst> I want to index into a set to replace the entire Data.Set interface with Lens / Optics
10:05:27 <tomsmeding> not even talking about Data.Set.Set, just any set data structure will have this same discussion
10:05:39 <ncf> that's your end goal?
10:05:39 <tomsmeding> the key of a Set is not the index
10:05:42 <tomsmeding> the key is the value
10:05:43 <Inst> yeah
10:05:58 <Inst> except under ^. at... on Set, you get ()
10:06:04 <Inst> because it's treating it as a map of () values
10:06:23 <tomsmeding> then write a lens thing ish (I don't lens) that doesn't!
10:06:24 <ncf> lenses are about mathematical representations of data, they're certainly not about peeking into the internal structure of things
10:06:40 <Inst> ncf: yes, because the whole qualified imports shit on Vector and Containers feels like it defeats the point of typeclasses
10:07:22 <Inst> like how there's no generic fmap on set etc because they're not functors
10:07:28 hueso joins (~root@user/hueso)
10:07:33 <ncf> if you're using Set.elemAt, you're either implementing some primitive function that nobody should look at, or using Set incorrectly. in either case, you shouldn't be using lens
10:07:35 <Inst> so you can sidestep the problem by going to lens instead
10:07:49 <tomsmeding> you cannot sidestep the problem by going to lens instead
10:07:56 <Inst> yeah, we can't :(
10:07:58 <tomsmeding> the problem that a Set is not a functor doesn't go away :p
10:08:13 <tomsmeding> you just hide it behind less readable types
10:08:23 × TMA quits (tma@twin.jikos.cz) (Ping timeout: 264 seconds)
10:08:31 <tomsmeding> formulate the API that you want to use for a Set, convince yourself that that API is implementable, and then implement it
10:08:34 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
10:08:38 <Inst> i still need to go through ploeh showing how Set can violate the functor composition law
10:08:39 <tomsmeding> well and that that API makes sense for the data structure
10:09:20 gehmehgeh joins (~user@user/gehmehgeh)
10:09:24 <tomsmeding> the reason Set cannot implement Functor is that there's no way to implement `lookup` after you've fmapped in uncomparable values
10:09:42 <tomsmeding> perhaps you can find some interesting violation of functor laws as well
10:09:50 <Inst> it's just a pet peeve, and I think others pointed out there's no easy way to generate maps in Haskell, i.e, Haskell, unlike more recent languages, doesn't have special syntax for other data structures
10:09:55 <tomsmeding> but the banal point is that the data structure just only works on orderable elements :p
10:09:56 <Inst> hell, it doesn't even have special syntax for array
10:10:12 TMA joins (tma@twin.jikos.cz)
10:10:44 <tomsmeding> what is `lookup id (fmap (+) (Set.fromList [1..5]))` supposed to do
10:11:18 <tomsmeding> any lensy interface that you devise that would allow this, is wrong
10:11:28 <Inst> Nothing? ;)
10:11:42 zmt01 joins (~zmt00@user/zmt00)
10:11:45 <tomsmeding> any lensy interface that uses elemAt excessively, or even at all, is likely inefficient and probably suboptimal
10:11:59 <tomsmeding> Inst: well that point you're _definitely_ breaking the functor laws :p
10:12:22 <tomsmeding> at least when you combine them in a reasonable way with the properties of the Set methods
10:12:23 <Inst> since list lookup returns a maybe
10:12:41 <ncf> you're not breaking the functor laws
10:13:01 <tomsmeding> yeah no you're breaking the presumed property that fmap commutes with lookup
10:13:07 <tomsmeding> with sounds like a thing you really want to have
10:13:16 <ncf> are you?
10:13:17 ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:8aa0:2a1c:7c77:360a)
10:13:17 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 268 seconds)
10:13:23 <Inst> anyways, the tentative plan is to provide a scripting dialect of haskell (or properly an eDSL) for the platform I want to use
10:13:27 <ncf> i don't get your example
10:13:44 hiredman joins (~hiredman@frontier1.downey.family)
10:13:52 <Inst> so you can see how my concerns are different, i.e, the plan is that the platform is FOSS, the database is blockchain (eventually)
10:13:57 <Inst> but you can run apps on the platform
10:13:58 <tomsmeding> ncf: Inst was suggesting that (ignoring concerns of "you can't check if a type does _not_ implement a type class") if a Set contains uncomparable values, lookup should just always return Nothing
10:14:12 <ncf> oh sorry i skipped over half of the discussion
10:15:36 <tomsmeding> Inst: then the challenge you have is not "how do I use elemAt", but "how do I design an interface to a number of data structures that is consistent, conventional in lensy idioms, and still properly aligns to the varying support for various operations of those data structures"
10:15:38 <ncf> well, my point is just that the "exofunctor" instance for Set doesn't violate any functor laws. it's just not a Functor in the usual sense
10:16:12 <ncf> (for compile time reasons rather than runtime reasons)
10:16:18 <Inst> oh, i didn't understand what you meant by exofunctor to begin with
10:16:33 <ncf> silly word for "not endo"-functor
10:16:43 <tomsmeding> maybe the answer is to have `class CFunctor c f where cfmap :: c b => (a -> b) -> f a -> f b`
10:16:47 <ncf> in this case a functor from the subcategory of Hask on the Ord types to Hask
10:16:48 <tomsmeding> or, a part of the answer
10:16:50 <Inst> since Set a puts a restriction on a of being a member of Eq, and functor can theoretically move it to non-Eq
10:16:59 <Inst> which also creates the problem that, say, if it's non-Eq, how should Set behave?
10:17:11 <tomsmeding> maybe CFunctor can work well with the rest of lens! Maybe not!
10:17:23 <Inst> but Map at least is a functor, no?
10:17:29 <tomsmeding> if you want to map over sets using lensy stuff, that's the question you'll need to answer
10:17:30 <ncf> Map k is
10:17:34 <tomsmeding> yes, because you're mapping over the values, not the keys
10:17:45 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
10:19:21 <tomsmeding> _embrace_ the fact that Set is not a Functor, and work with it
10:19:32 <tomsmeding> the fact that Set is not a Functor allows it to have logarithmic-time lookup
10:19:36 <tomsmeding> in a sense
10:20:15 <tomsmeding> if you care more about being a Functor then you should use lists instead :p
10:20:20 <Inst> as opposed to arrays with a constant time look-up? :)
10:20:22 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
10:20:26 <tomsmeding> and linear-time insertion
10:20:32 <tomsmeding> it's all trade-offs
10:20:48 <Inst> yeah i'm still embarrassed i'm not good with ByteArray#
10:21:21 <tomsmeding> constant-insert linear-lookup ([a]), log-insert log-lookup (Map Int a), linear-insert constant-lookup (Array Int a)
10:21:56 <Inst> what's the standard implementation of set, anyways?
10:22:00 <tomsmeding> why do you need ByteArray# all of a sudden lol
10:22:01 <Inst> I'm surprised Data.Set is balanced binary tree
10:22:14 <mauke> what was that proposal for making datatype contexts useful again?
10:22:14 × ft quits (~ft@p508db238.dip0.t-ipconnect.de) (Quit: leaving)
10:22:16 <tomsmeding> Data.Vector.Mutable is good enough
10:22:45 <tomsmeding> Inst: what else would it be?
10:23:20 <tomsmeding> because it's Haskell you have to choose from the persistent data structures
10:23:31 <mauke> I remember something about swapping out Applicative for Monoidal and also making Set an instance of Functor
10:23:35 <Inst> I'm just not familiar enough with fundamentals of computer science to think of it as such, I'm only starting to implement stuff in C and going through Udemy DS courses (which without exception, suck)
10:23:39 <tomsmeding> balanced binary trees are a sweet spot that have log-time for most things and are still persistent
10:23:47 ec joins (~ec@gateway/tor-sasl/ec)
10:23:47 <Inst> well, that's probably too harsh on Udemy, there's got to be a few good courses there
10:24:10 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
10:24:14 AlexNoo_ is now known as AlexNoo
10:24:16 <Inst> regarding sets, I'm just curious how sets are implemented in other languages
10:24:26 <Inst> I'd assume they'd be arrays with different accessors
10:24:34 <Inst> set object
10:24:35 <mauke> typically balanced trees or hashtables
10:24:39 <Inst> ah
10:24:47 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:24:54 <Inst> Data.HashSet
10:24:58 <mauke> or bit arrays if the elements are enums
10:24:59 <tomsmeding> i.e. the same as Map k () ;)
10:25:09 <mauke> (hi, pascal)
10:25:10 <Inst> Data.HashMap :)
10:25:30 <tomsmeding> Inst: those are still balanced binary trees
10:25:50 <tomsmeding> a proper hash table is backed by an array and thus requires mutability to have sub-linear mutation
10:27:06 <tomsmeding> B-trees also exist as an implementation of maps (and thus sets), but those are still balanced trees, just not binary any more
10:27:22 <mauke> ooh, the thing I remember is "partial type constructors"!
10:28:00 <Inst> ack, w/e, going back to being psised at nixos-anywhere
10:28:04 <Inst> sorry about that
10:28:06 <tomsmeding> mauke: has the feeling of a hack that would break completely once haskell gets dependent enough
10:28:09 <tomsmeding> but I dunno :)
10:28:09 <Inst> i need to get the VPS running NixOS
10:28:40 <Inst> tbh if Haskell gets dependent enough, any thoughts on fixing the freaking DS syntax?
10:28:43 <tomsmeding> not because of the partiality, but because of the "where do you put the type class constraint"
10:28:53 <Inst> XOverloadedLists is an ugly hack and the type inference engine knows it
10:28:57 <mauke> https://dl.acm.org/doi/pdf/10.1145/3371108
10:29:01 <tomsmeding> -XOverloaded* needs to die
10:29:11 <tomsmeding> can I have -XNonOverloadedInts already
10:29:39 <mauke> -XNoOverloadedIntegers, please
10:29:50 <mauke> :-P
10:29:51 <tomsmeding> yes
10:30:02 <tomsmeding> and have 123i mean an Int literal
10:30:05 <tomsmeding> or something
10:30:08 <mauke> no, Integer
10:30:13 <Inst> default (Int, Float)
10:30:23 <mauke> you made your cake, now lie in it
10:30:33 <tomsmeding> and default declarations can go to hell as well
10:30:47 <tomsmeding> mauke: fair :p
10:31:25 <Inst> which language invented the [1 2 3] list syntax anyways?
10:31:32 <mauke> MicroHs defaults to "default ()" IIRC
10:32:20 <tomsmeding> mauke: ah, that paper gives a definition of Functor that is kind of in the direction of my CFunctor
10:32:49 tomsmeding questions that you need a custom type system for this
10:33:11 <tomsmeding> at the cost of some nice syntax, perhaps
10:33:17 <tomsmeding> anyway I also have work to do lol
10:34:33 <mauke> https://www.youtube.com/watch?v=rqmCwpRXT_E https://www.youtube.com/watch?v=oSWeQrQ9CCY
10:38:29 tomsmeding should watch that at some point
10:38:36 <tomsmeding> some interesting discussion under the munihac video
10:41:42 zetef joins (~quassel@5.2.182.99)
10:43:02 × zetef quits (~quassel@5.2.182.99) (Remote host closed the connection)
10:45:58 × hiredman quits (~hiredman@frontier1.downey.family) (Ping timeout: 268 seconds)
10:46:44 <cheater> anyone here running the discourse?
10:46:49 <cheater> it's not sending out activation emails
10:51:13 zetef joins (~quassel@5.2.182.99)
10:53:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:57:51 L29Ah joins (~L29Ah@wikipedia/L29Ah)
10:58:40 hiredman joins (~hiredman@frontier1.downey.family)
11:04:09 mmhat joins (~mmh@p200300f1c706a298ee086bfffe095315.dip0.t-ipconnect.de)
11:09:42 × zetef quits (~quassel@5.2.182.99) (Remote host closed the connection)
11:11:47 xff0x joins (~xff0x@2405:6580:b080:900:f97d:d4c:a5b1:7ce0)
11:18:23 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 272 seconds)
11:20:24 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 255 seconds)
11:33:37 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:34:18 <tomsmeding> GHC at its best:
11:34:20 <tomsmeding> > Expected a type, but ‘a’ has kind ‘Type’
11:35:27 <Inst> okay, so Nixos-anywhere is deploying now
11:35:30 <Inst> I can BS a bit more
11:35:44 <Inst> have there been any attempts to replace HTML with a Haskell-based eDSL?
11:36:00 <Inst> Because the whole golden trinity thing, (HTML + CSS + JS), feels like BS to me
11:36:09 <Inst> I guess it's what's been driving the development of frameworks and so on
11:37:17 <Inst> HTML, even HTML5, is an ad-hoc pragmatic approach that has little logic other than historical precedent, CSS makes even less sense
11:39:44 <Inst> i mean in the sense of something that compiles to HTML etc, anyways
11:40:11 hallucinagen joins (~prodmezha@123.63.203.210)
11:43:19 × Core7852 quits (~rosco@183.171.72.200) (Ping timeout: 260 seconds)
11:50:07 renpose joins (~renpose@user/renpose)
11:56:34 × hueso quits (~root@user/hueso) (Ping timeout: 246 seconds)
11:59:09 hueso joins (~root@user/hueso)
11:59:38 rvalue joins (~rvalue@user/rvalue)
12:01:49 alexherbo2 joins (~alexherbo@2a02-8440-3240-9adf-586c-24cb-10b4-f9fd.rev.sfr.net)
12:03:42 __monty__ joins (~toonn@user/toonn)
12:05:13 × danse-nr3 quits (~danse@151.37.211.199) (Ping timeout: 268 seconds)
12:05:40 × alexherbo2 quits (~alexherbo@2a02-8440-3240-9adf-586c-24cb-10b4-f9fd.rev.sfr.net) (Remote host closed the connection)
12:10:54 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
12:11:19 rvalue joins (~rvalue@user/rvalue)
12:11:21 × robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
12:24:17 alexherbo2 joins (~alexherbo@209.15.23.93.rev.sfr.net)
12:27:46 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
12:35:15 danse-nr3 joins (~danse@na-19-81-54.service.infuturo.it)
12:35:47 × hallucinagen quits (~prodmezha@123.63.203.210) (Ping timeout: 256 seconds)
12:50:20 dminuoso joins (~weechat@user/dminuoso)
12:52:13 a51 joins (a51@gateway/vpn/protonvpn/a51)
12:53:45 h_______________ is now known as hammond
12:53:54 × hammond quits (~abner@gateway02.insomnia247.nl) (Changing host)
12:53:54 hammond joins (~abner@user/hammond2)
12:58:32 × danse-nr3 quits (~danse@na-19-81-54.service.infuturo.it) (Remote host closed the connection)
12:58:54 danse-nr3 joins (~danse@na-19-81-54.service.infuturo.it)
13:01:08 × mei quits (~mei@user/mei) (Remote host closed the connection)
13:01:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:03:33 mei joins (~mei@user/mei)
13:09:39 × CiaoSen quits (~Jura@2a05:5800:2bf:c200:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds)
13:22:05 × mmhat quits (~mmh@p200300f1c706a298ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
13:22:27 mmhat joins (~mmh@p200300f1c706a2b6ee086bfffe095315.dip0.t-ipconnect.de)
13:22:47 <[exa]> Inst: you'd probably need to replace the whole DOM model in all browsers first, HTML is just a trasmissible encoding of DOM
13:39:01 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:39:26 × danse-nr3 quits (~danse@na-19-81-54.service.infuturo.it) (Remote host closed the connection)
13:39:48 danse-nr3 joins (~danse@na-19-81-54.service.infuturo.it)
13:49:45 × danse-nr3 quits (~danse@na-19-81-54.service.infuturo.it) (Ping timeout: 272 seconds)
13:55:11 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:55:21 shapr joins (~user@c-24-218-186-89.hsd1.ma.comcast.net)
14:01:30 × acidjnk_new quits (~acidjnk@p200300d6e708d544f8395f3770d8e9d9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
14:04:49 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
14:05:14 <Hecate> https://discourse.haskell.org/t/pre-hftp-ghc-should-offer-low-level-logging-infrastructure/9159/12
14:09:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:10:56 danse-nr3 joins (~danse@na-19-81-54.service.infuturo.it)
14:11:01 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
14:11:18 × danse-nr3 quits (~danse@na-19-81-54.service.infuturo.it) (Remote host closed the connection)
14:11:40 danse-nr3 joins (~danse@na-19-81-54.service.infuturo.it)
14:16:13 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
14:22:23 <Inst> [exa]: it gets me thinking of FRP and attempts to create a functional GUI
14:22:50 <Inst> [exa]: I'm more thinking of something that transpiles to DOM, as an acceptable solution, until we have a proper functional GUI paradigm out
14:23:46 omegatron joins (~some@user/omegatron)
14:25:24 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
14:46:44 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
14:54:27 <danse-nr3> my personal advice would be to do backend in haskell and frontend in purescript considering the current state of the ecosystem Inst. From the little i know you, you might not like to learn some purescript, yet that seems the most effective solution to me at the moment
14:54:52 <Inst> i actually would prefer javascript :3
14:55:45 <Inst> like nicholas nassim taleb's stance on "middlebrow" art and literature, he'd rather do the pop pulp stuff and the classics / avant garde stuff, but not in between
14:56:19 <danse-nr3> i thought you were asking about server-side rendering, then i must have misunderstood
14:56:28 <nullie> is reflex-dom still alive?
14:56:49 <danse-nr3> yeah some people use reflex as far as i know
14:56:57 <Inst> i'm not actually going to do something like that, i just want to get the site working, have it look attractive ,then slowly expand functionality
14:57:20 <Inst> my goal would be to have a Haskell eDSL for websites, which the server would then translate into html / css / js, etc
14:57:39 <danse-nr3> that is server-side rendering
14:58:25 <Inst> but that's like a long-term goal
14:59:00 <danse-nr3> i mean that is what yesod offered before client-side rendering became more comfortable
14:59:39 <Inst> did yesod really offer that?
14:59:53 <Inst> i tried it, i didn't feel it, you had shakespearean templates that didn't really impress me
15:01:12 <danse-nr3> i see what you mean. There were other attempts that get closer to an embedded language, but i don't think it is a viable path at the moment. Anyways, you seem to have more pressing goals
15:02:28 <Inst> i mean the goal is that users on the platform would be able to use the eDSL to build apps for it
15:02:57 <danse-nr3> huh i thought you wanted to make a "social marketplace"?
15:02:57 <Inst> and iirc the monomer developer eventually wants his app to be suitable for mobile apps as well
15:03:19 <Inst> an MMO of the real economy? I.e, some kind of weird metaverse concept?
15:03:37 <Inst> one of the big inspirations is Chinese omni-apps
15:03:52 <Inst> like, Wechat, there's tons of plug-in apps that wechat itself uses, connected to their payment system
15:04:19 <Inst> so you just use wechat, it downloads its own apps, runs those apps, and you can buy stuff from its client apps
15:04:58 <Inst> so an average user could easily design their own storefront app, or even a map app for their taxi service, etc
15:05:10 <danse-nr3> i lost you. Monomer for mobile could make sense, yes
15:06:04 <Inst> let's say i have a platform. The platform allows users to create their own apps to sell goods and services through their site
15:06:37 <danse-nr3> and then you deploy such apps ... where?
15:06:42 <Inst> on the website
15:06:53 <Inst> on the platform, properly, with both a web and mobile app version
15:07:19 <danse-nr3> and why would your website or app be full of buyers?
15:07:44 <Inst> i mean the prime target is fiver and upwork taking like 20-30% rakes
15:08:01 <danse-nr3> huh you are talking online jobs now
15:08:12 <Inst> ya, that's the core competency, or at least starting competency
15:08:34 <Inst> imagine if FOSS people (I'm not really one of them) decided to do a FOSS version of Uber, FiveRR, Upwork, and Amazon
15:08:41 <danse-nr3> yeah so my advice would be try to focus on the core because that sounds challenging already
15:08:56 <Inst> just put out a minimal app, that's essentially a social network
15:09:15 <Inst> then work on making it so that members of the social network can advertise for and arrange transactions through Stripe or Paypal
15:09:28 × Guest52 quits (~Guest52@185.57.29.142) (Ping timeout: 250 seconds)
15:10:46 <Inst> and see here:
15:10:47 <Inst> https://www.fiverr.com/gigs/microsoft
15:11:20 <Inst> this, in my intended product, would instead be the Microsoft store presence on the social app
15:11:30 <Inst> displaying the contracts they're buying and the contracts they're selling
15:11:54 <danse-nr3> sounds ambitious, good luck
15:12:25 <Inst> one step at a time, first step: get freaking nixos installed onto this VPS
15:14:09 zetef joins (~quassel@5.2.182.99)
15:17:00 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 268 seconds)
15:23:14 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds)
15:24:10 sord937 joins (~sord937@gateway/tor-sasl/sord937)
15:25:17 tri joins (~tri@ool-18bbef1a.static.optonline.net)
15:29:36 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds)
15:36:35 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:37:05 × zetef quits (~quassel@5.2.182.99) (Remote host closed the connection)
15:46:53 acidjnk_new joins (~acidjnk@p200300d6e708d544d1e6663fb0659050.dip0.t-ipconnect.de)
15:48:25 × [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
15:49:32 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
15:51:09 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
15:55:54 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
16:12:54 × danse-nr3 quits (~danse@na-19-81-54.service.infuturo.it) (Ping timeout: 255 seconds)
16:13:59 × erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 260 seconds)
16:14:33 erisco joins (~erisco@d24-141-66-165.home.cgocable.net)
16:18:22 zetef joins (~quassel@5.2.182.99)
16:19:08 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
16:24:27 <dmj`> Inst: htmx looks cool, you should check that out. Building a web framework around it w/ wai and jmacro could be nice
16:27:37 tri joins (~tri@ool-18bbef1a.static.optonline.net)
16:31:53 <Inst> https://hackage.haskell.org/package/lucid-htmx
16:32:05 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
16:32:23 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
16:33:06 × alexherbo2 quits (~alexherbo@209.15.23.93.rev.sfr.net) (Ping timeout: 250 seconds)
16:34:59 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 255 seconds)
16:39:10 danza joins (~francesco@151.37.183.29)
16:40:10 <haskellbridge> <J​ade> why does `take 10 <$> readFile "/dev/random" result in an error `invalid argument (cannot decode byte sequence starting from <N>` after reading a few bytes?
16:40:10 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
16:40:56 gehmehgeh is now known as gmg
16:41:03 <geekosaur> because your locale is probably a UTF8 and /dev/random can easily produce illegal UTF8 sequences
16:42:56 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:48:58 × phma_ quits (~phma@host-67-44-208-68.hnremote.net) (Read error: Connection reset by peer)
16:50:04 phma_ joins (~phma@host-67-44-208-21.hnremote.net)
16:51:39 <geekosaur> the documentation says errors should be discarded, but https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/bugs.html#in-prelude-support at end of subsection says ghc throws the error instead
16:54:50 tremon joins (~tremon@83.80.159.219)
16:55:39 × zetef quits (~quassel@5.2.182.99) (Remote host closed the connection)
16:56:53 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
16:57:56 <ncf> what would happened if the error was discarded? would it read more data until 10 unicode characters are produced? i don't think that's what the report entails
16:57:59 <ncf> happen*
16:58:47 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
16:58:51 <dmj`> Inst: yea but that's just generating htmx that has the data- annotations, I'm referring to mapping the ajax handlers back to pure haskell functions
16:59:03 Guest52 joins (~Guest52@185.57.29.142)
16:59:10 <geekosaur> the report says it acts like EOF
16:59:49 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
17:00:44 <geekosaur> that said, this is actually a gray area: the report says I/O errors are discarded, but is silent about decoding errors (and in fact about decoding)
17:02:42 a51 joins (a51@gateway/vpn/protonvpn/a51)
17:03:27 hackyhacker joins (~hackyhack@45-105-169-81.mobileinternet.proximus.be)
17:03:59 <Inst> <Jade> Data.ByteString.readFile :3
17:05:19 × hackyhacker quits (~hackyhack@45-105-169-81.mobileinternet.proximus.be) (Read error: Connection reset by peer)
17:05:50 <Inst> actually, that doesn't work
17:06:41 <Inst> need Data.ByteString.Lazy.readFile
17:07:12 <Inst> and... it's beautiful :3
17:10:03 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 255 seconds)
17:15:27 igemnace joins (~ian@user/igemnace)
17:25:12 phma_ is now known as phma
17:29:29 <EvanR> utf8 allows resuming decoding after encountering nonsense, in case valid utf8 was corrupted at some point
17:29:38 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1)
17:30:01 <EvanR> it could be used to derive fun and profit from /dev/random
17:30:18 × renpose quits (~renpose@user/renpose) (Ping timeout: 250 seconds)
17:31:50 hackyhacker joins (~hackyhack@43-105-169-81.mobileinternet.proximus.be)
17:37:24 hallucinagen joins (~prodmezha@123.63.203.210)
17:45:53 Square joins (~Square4@user/square)
17:48:22 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
17:50:16 ec joins (~ec@gateway/tor-sasl/ec)
17:53:41 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:58:39 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 252 seconds)
18:00:10 <Inst> wait, a binary tree can be foldr-ed, right?
18:00:59 <danza> i would expect so
18:01:23 tri joins (~tri@ool-18bbef1a.static.optonline.net)
18:01:25 <Inst> oh, but this is really ugly
18:02:06 <Inst> nstance Foldable BTree where
18:02:07 <Inst> ghci| foldr f z Lf = z
18:02:07 <Inst> ghci| foldr f z (Br a cont1 cont2) = foldr f (f a (foldr f z cont1)) cont2
18:02:07 <Inst> ghci|
18:02:50 <Inst> should be in reverse
18:03:48 <Inst> yeah, switching the conts should be correct
18:03:48 × hackyhacker quits (~hackyhack@43-105-169-81.mobileinternet.proximus.be) (Read error: Connection reset by peer)
18:06:53 × danza quits (~francesco@151.37.183.29) (Ping timeout: 268 seconds)
18:07:13 rvalue joins (~rvalue@user/rvalue)
18:10:26 hackyhacker joins (~hackyhack@43-105-169-81.mobileinternet.proximus.be)
18:23:52 <EvanR> Inst, just replace the leaves with the z and the constructors with f
18:24:12 × hackyhacker quits (~hackyhack@43-105-169-81.mobileinternet.proximus.be) (Read error: Connection reset by peer)
18:27:22 <Inst> try it :3
18:27:33 <Inst> :t foldr
18:27:34 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
18:27:46 <Inst> you can't do it the easy way in a binary tree
18:28:25 <Inst> how about data RTree a = Rose [RTree a]?
18:29:05 <Inst> I'm busy trying to inject data BTree a = Lf | Br a (BTree a) (BTree a) into a traversable now
18:30:01 <tomsmeding> Inst: try writing the catamorphism
18:30:22 <tomsmeding> cataBTree :: r -> (a -> r -> r -> r) -> BTree a -> r
18:30:53 <tomsmeding> catamorphisms ("folds") are more well-behaved in a certain sense, but their signature naturally depends on the constructors of the data type
18:31:04 <tomsmeding> Data.Foldable.foldr is the catamorphism on lists
18:31:27 <tomsmeding> it so happens that you can also wrench it onto other data structures, but it was made for lists
18:31:48 <tomsmeding> EvanR: you could do that to /dev/urandom but you wouldn't get a uniform distribution on unicode codepoints
18:33:30 <Inst> i'm sort of embarrassed because I can't write instance Applicative BTree right now, nor can I write instance Applicative MyList :(
18:33:46 <tomsmeding> can you write the monad instance
18:34:02 <Inst> of course, that's easy
18:34:04 <tomsmeding> because then (<*>) = ap ;)
18:34:22 <Inst> yeah but that seems cheap
18:34:27 <Inst> and i keep on wondering if it's actually performant
18:34:40 <tomsmeding> it just calls (>>=) twice
18:35:09 <tomsmeding> you can expand the >>= calls manually and see what you end up with :p
18:35:17 <tomsmeding> and if you can simplify that
18:36:55 triceraptor joins (~prodmezha@223.187.113.18)
18:36:56 <tomsmeding> the thing is that there are multiple possible Applicative instances for rose trees I think
18:37:11 <tomsmeding> and I think also multiple monad instances
18:37:26 <tomsmeding> Applicative and Monad for rose trees are the weirdest things
18:37:50 <tomsmeding> you're forced to combine things that ought to be separate, and it's kind of arbitrary how you do so
18:38:12 <ncf> every Monad instance yields two Applicative instances, for starters
18:38:32 <monochrom> :(
18:38:35 <tomsmeding> iirc for containers:Data.Tree.Tree there are actually multiple lawful monad instances
18:38:42 <tomsmeding> and none of them is sensible (imo)
18:40:47 × hallucinagen quits (~prodmezha@123.63.203.210) (Ping timeout: 264 seconds)
18:41:52 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:47:53 <EvanR> tomsmeding, uniform would be boring anyway
18:48:07 <tomsmeding> :p
18:51:05 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:55:47 linzage joins (~prodmezha@223.187.113.18)
18:58:05 ft joins (~ft@p508db238.dip0.t-ipconnect.de)
18:58:41 × triceraptor quits (~prodmezha@223.187.113.18) (Ping timeout: 268 seconds)
19:05:15 <Inst> https://paste.tomsmeding.com/2nrNVPi9
19:05:32 <Inst> oh, i'm an idiot
19:06:05 × linzage quits (~prodmezha@223.187.113.18) (Ping timeout: 268 seconds)
19:06:36 <Inst> I don't think I can do better than this for explicit recursive solutions, right?
19:07:04 <tomsmeding> what is MyList
19:07:30 <Inst> data MyList a = MLL | MLBr a (MyList a)
19:07:58 <tomsmeding> which applicative instance are you going for :p
19:08:15 <tomsmeding> the interleaving one, presumably
19:08:21 <Inst> the standard one
19:08:24 <Inst> not ziplist
19:08:53 <Inst> i'm bored and bashing my head in against trying to install nixos, so might as well go review implementation of list applicatives and foldr
19:09:30 <tomsmeding> MLBr f fcont <*> l = fmap f l ++ (fcont <*> l)
19:09:32 <tomsmeding> right?
19:09:36 <EvanR> review your scriptures
19:09:54 <tomsmeding> potentially you can write a special-case fmap-plus-append
19:09:55 <monochrom> Explicit recursion is OK.
19:10:57 <Inst> the append is less efficient, no?
19:11:14 <tomsmeding> yeah, so you'd manually fuse fmap and append
19:11:24 <tomsmeding> which results in roughly the same code as you currently have :p
19:11:28 <tomsmeding> slightly less special-cased
19:11:34 <monochrom> In the case of list's <*>, it is even more enlightening to see that one of your two explicit recursions is just fmap.
19:11:36 <Inst> oh wait, append should be doubly strict? I forget
19:11:46 <tomsmeding> monochrom: have you looked at the paste
19:12:11 <monochrom> Yes. It has an outer recursion and an inner recursion. One of them is fmap.
19:12:19 Guest28 joins (~Guest28@broadband-178-140-136-65.ip.moscow.rt.ru)
19:12:26 <tomsmeding> no
19:12:36 <tomsmeding> note the last equation of go
19:12:49 <Inst> yeah, it is, but the point is that i'm trying to avoid the <>
19:12:57 <Inst> (except this one doesn't even have a semigroup instance written for it)
19:13:01 <tomsmeding> it's _approximately_ fmap, but not precisely
19:13:10 <tomsmeding> it's fmap fused with this particular append
19:13:52 <monochrom> Ugh then it's poorly written :)
19:13:57 <Inst> ugh why
19:14:00 <Inst> :(
19:14:02 <Inst> oh, monochrom
19:14:06 <tomsmeding> monochrom: would you use (++)?
19:17:09 ezzieygu1wuf is now known as ezzieyguywuf
19:18:05 <monochrom> Yes.
19:18:19 <tomsmeding> then you have two traversals over each part: one in fmap and one in (++)
19:18:42 <tomsmeding> barring clever deforestation by ghc (does that happen here? I dunno), that's less efficient than one traversal
19:20:27 × elkcl quits (~elkcl@broadband-178-140-136-65.ip.moscow.rt.ru) (Remote host closed the connection)
19:21:17 <monochrom> I have trouble seeing why that is a priority, given that the prior conversation seems to be on learning applicatives and monads.
19:21:24 elkcl joins (~elkcl@broadband-178-140-136-65.ip.moscow.rt.ru)
19:21:24 <tomsmeding> fair :D
19:21:43 <tomsmeding> Inst: ^
19:22:21 <tomsmeding> and it's a minor problem anyway, it's a constant factor overhead that won't even reach 2x; the complexity is fine
19:22:55 <Inst> ???
19:22:59 <Inst> relearning applicatives and monads
19:23:14 <Inst> the real goal is more like, actually getting a solid understanding of traversable
19:23:14 <tomsmeding> still, the version with fmap and ++ is much nicer
19:23:16 <Inst> I'm thinking about
19:23:39 <tomsmeding> and much clearer in the actual data flow
19:23:50 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:23:51 <monochrom> An insight I discovered when writing lectures for them was precisely that not only applicative does more than functor, but also an internal sense of how much: in many cases (at least Maybe and []), <*> can build upon fmap, but also needs to add its own case analysis.
19:23:59 <Inst> traverseB_ :: (Applicative f, Traversable t) :: (a -> Maybe (f b)) -> t a -> f ()
19:24:35 zetef joins (~quassel@5.2.182.98)
19:24:36 <Inst> you can get what this is really about, right?
19:24:39 <monochrom> For code optimization, I would still start with map and (++), then recongize that they are both foldr's, then try to use one of those foldr fusion laws.
19:24:53 <elkcl> hi, maybe a bit of an offtopic question (idk of a better place to ask this): is there a more a less practical example of a type constructor in lambda *weak* omega? I tried writing down the pair type constructor as an example (pairs like in untyped lambda calculus, where pair a b = λf. f a b), but looks like I still need П-types for that (because it is unclear what the result type of f would be), which makes it lambda omega, not
19:24:54 <elkcl> lambda *weak* omega
19:25:09 <Inst> lol nested loops? :3
19:25:24 <monochrom> (And I don't commit to whether it is human or computer who do that rewrite.)
19:25:31 <tomsmeding> monochrom: a <*> b == ap a b == do { f <- a; x <- b; return (f x) } == do { f <- a; f <$> b }
19:25:42 <tomsmeding> it can always build on fmap
19:25:58 <monochrom> But that one builds on >>= and join :(
19:26:04 <Inst> okay, thanks for the challenge, i'll rewrite both of them as foldr :)
19:26:13 <tomsmeding> monochrom: unless you inline this particular application of >>= :p
19:26:20 <tomsmeding> which is the same anyway
19:26:23 <monochrom> Yeah I inline that.
19:26:31 <Inst> since i have a foldable implementation up already
19:27:33 <tomsmeding> elkcl: try ##dependent or #agda perhaps
19:28:10 × zetef quits (~quassel@5.2.182.98) (Remote host closed the connection)
19:28:21 <monochrom> So I write like "Nothing <*> _ = Nothing; Just f <*> xs = fmap f xs"
19:28:32 <elkcl> tomsmeding: ok thanks
19:28:34 tomsmeding writes the same
19:31:57 Angelz Back.
19:32:04 <Inst> ugh, needs same number of arguments
19:32:47 <mauke> Just f <*> Just x = pure (f x); _ <*> _ = mempty
19:33:08 <Inst> (<*>) a = case a of Nothing -> Nothing; Just f -> fmap f
19:33:09 <Inst> pffft
19:33:26 <Inst> still need to deconstruct the thing
19:33:31 <Inst> can't get it point free
19:34:17 <[exa]> Inst: guards should help a little there
19:34:18 <mauke> @pl \f x -> f >>= (<$> x)
19:34:18 <lambdabot> (. flip (<$>)) . (>>=)
19:34:33 <Inst> (<*>) = fromMaybe (const Nothing)
19:35:16 <Inst> that doesn't work
19:35:41 <mauke> :t fmap . fromMaybe (const Nothing)
19:35:42 <lambdabot> Functor f => Maybe (a1 -> Maybe a2) -> f a1 -> f (Maybe a2)
19:36:08 <tomsmeding> :t \f -> maybe Nothing (Just . f)
19:36:09 <lambdabot> (a1 -> a2) -> Maybe a1 -> Maybe a2
19:37:09 <tomsmeding> @pl \f x -> maybe Nothing (\g -> g <$> x) f
19:37:09 <lambdabot> flip (maybe Nothing . flip (<$>))
19:37:26 <tomsmeding> :t flip (maybe Nothing `fmap` flip fmap)
19:37:27 <lambdabot> Maybe (a1 -> a2) -> Maybe a1 -> Maybe a2
19:38:29 <Inst> a <*> b = foldr (\f -> foldr ((:) . f) [] b) [] a
19:38:32 <Inst> still doesn't work :(
19:39:12 <Inst> should be able to figure out how to do it with foldr, but avoid the (<>)
19:40:09 <tomsmeding> @pl \fs xs -> foldr (\f acc -> foldr (\x acc' -> f x : acc') acc xs) [] fs
19:40:09 <lambdabot> flip (flip foldr [] . flip (flip . foldr . ((:) .)))
19:40:16 <tomsmeding> chef's kiss
19:41:44 <mauke> :t \a b -> foldr (\f z -> foldr ((:) . f) z b) [] a
19:41:45 <lambdabot> (Foldable t1, Foldable t2) => t1 (a1 -> a2) -> t2 a1 -> [a2]
19:42:09 × Pozyomka quits (~pyon@user/pyon) (Ping timeout: 255 seconds)
19:43:55 Pozyomka joins (~pyon@user/pyon)
19:47:24 <Inst> grrrr!
19:48:21 <Inst> and yeah that's better cuz of foldr streaming, no?
19:48:46 <ski> Right x >>= k = k x
19:48:58 <ski> e@(Left _) >>= _ = e
19:53:38 <tomsmeding> ski: that second equation doesn't typecheck
19:53:43 <tomsmeding> unfortunately
19:54:18 zetef joins (~quassel@5.2.182.98)
19:54:53 <mauke> e@Left{} >>= _ = unsafeCoerce e
19:55:55 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
20:00:06 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:00:52 <haskellbridge> <J​ade> mauke: can you use record syntax for normal ADTs?
20:01:08 <tomsmeding> only {}
20:02:53 <geekosaur> is the as-pattern even needed there? the first pattern should have already forced it
20:03:38 <tomsmeding> I should show that instance to my students lol
20:03:42 <tomsmeding> they be "uh"
20:03:52 <haskellbridge> <J​ade> omsmeding: interesting, thanks
20:04:03 <ski> tomsmeding : the point would be to have `e' get assigned the type `forall b. Either a b', there
20:04:11 <haskellbridge> <J​ade> oops, I'm sorry for cutting off your name
20:04:17 <tomsmeding> ski: yeah but it doesn't :p
20:04:25 <ski> in the current type system
20:04:33 <tomsmeding> indeed
20:04:46 <tomsmeding> Jade: I've seen much weirder misspellings :p
20:04:58 <tomsmeding> and I sympathise because autocomplete is broken across the bridge
20:05:05 <tomsmeding> (presumably; it is on this side)
20:05:12 hackyhacker joins (~hackyhack@109.140.160.93)
20:05:15 <ski> with "polymorphic variants" (lightweight variants, using row types) in OCaml, the type of `e' in the corresponding code would not include the alternative `Right'
20:05:35 <haskellbridge> <J​ade> sadly can't blame this one on technology :P
20:05:36 <haskellbridge> <J​ade> purely my fault
20:06:23 <ski> geekosaur : strictly speaking, no. i just tend to prefer to make the defining equations independent of each other, so that the result (not considering bottoms at least) does not depend on the ordering
20:07:10 <ski> (in some cases, that does make the size of the code explode, though)
20:09:25 target_i joins (~target_i@user/target-i/x-6023099)
20:13:18 dhil joins (~dhil@2001:8e0:2014:3100:65f2:4b8b:1e5:eca)
20:15:54 pavonia joins (~user@user/siracusa)
20:21:56 × hackyhacker quits (~hackyhack@109.140.160.93) (Read error: Connection reset by peer)
20:36:52 × zetef quits (~quassel@5.2.182.98) (Remote host closed the connection)
20:51:53 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:54:12 × Guest28 quits (~Guest28@broadband-178-140-136-65.ip.moscow.rt.ru) (Quit: Client closed)
20:54:43 × elkcl quits (~elkcl@broadband-178-140-136-65.ip.moscow.rt.ru) (Quit: Konversation terminated!)
20:58:23 siw5ohs0 joins (~aiw5ohs0@user/aiw5ohs0)
20:58:37 siw5ohs0 parts (~aiw5ohs0@user/aiw5ohs0) (Leaving)
21:05:43 × target_i quits (~target_i@user/target-i/x-6023099) (Ping timeout: 268 seconds)
21:05:59 target_i joins (~target_i@user/target-i/x-6023099)
21:06:16 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
21:08:47 × sprout quits (~quassel@2a02-a448-3a80-0-e595-ce43-46c0-8c8c.fixed6.kpn.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
21:09:23 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:15:08 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
21:16:07 sprout joins (~quassel@2a02-a448-3a80-0-7de0-65dd-3177-b6a5.fixed6.kpn.net)
21:16:23 × michalz quits (~michalz@185.246.207.215) (Quit: ZNC 1.8.2 - https://znc.in)
21:27:07 ania123 joins (~ania123@94-43-231-47.dsl.utg.ge)
21:31:18 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
21:31:51 tri joins (~tri@ool-18bbef1a.static.optonline.net)
21:36:27 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 252 seconds)
21:38:11 × flukiluke quits (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection)
21:39:23 flukiluke joins (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
21:40:09 [Leary] joins (~Leary]@user/Leary/x-0910699)
21:51:28 × omegatron quits (~some@user/omegatron) (Quit: Power is a curious thing. It can be contained, hidden, locked away, and yet it always breaks free.)
21:57:29 Lycurgus joins (~georg@user/Lycurgus)
22:01:42 sawilagar joins (~sawilagar@user/sawilagar)
22:02:39 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
22:11:41 × dhil quits (~dhil@2001:8e0:2014:3100:65f2:4b8b:1e5:eca) (Ping timeout: 240 seconds)
22:12:19 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
22:12:58 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
22:13:57 Sgeo joins (~Sgeo@user/sgeo)
22:15:27 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
22:16:21 × ania123 quits (~ania123@94-43-231-47.dsl.utg.ge) (Quit: Client closed)
22:18:32 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
22:19:13 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
22:20:34 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:36:02 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Quit: ZNC 1.7.5 - https://znc.in)
22:36:35 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 264 seconds)
22:39:49 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
22:42:24 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
22:44:55 × Square quits (~Square4@user/square) (Ping timeout: 272 seconds)
22:47:06 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Remote host closed the connection)
22:51:16 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:51:19 tri joins (~tri@2607:fb90:b11c:c26:dd1e:45f1:66e:dece)
22:59:30 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
23:01:09 jmdaemon joins (~jmdaemon@user/jmdaemon)
23:05:58 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 268 seconds)
23:06:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
23:09:44 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Quit: ZNC 1.7.5 - https://znc.in)
23:13:01 shapr` joins (~user@c-24-218-186-89.hsd1.ma.comcast.net)
23:14:04 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
23:14:06 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:14:55 × shapr quits (~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
23:16:10 × acidjnk_new quits (~acidjnk@p200300d6e708d544d1e6663fb0659050.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
23:17:27 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:33:13 × tri quits (~tri@2607:fb90:b11c:c26:dd1e:45f1:66e:dece) (Remote host closed the connection)
23:40:37 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:41:38 × noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving)
23:45:03 libertyprime joins (~libertypr@118-92-68-68.dsl.dyn.ihug.co.nz)
23:45:07 × Luj quits (~Luj@2a01:e0a:5f9:9681:304f:b65d:c4ab:ff14) (Quit: Ping timeout (120 seconds))
23:45:27 Luj joins (~Luj@2a01:e0a:5f9:9681:114f:c45b:717e:86b)
23:54:03 × Tisoxin quits (~Ikosit@user/ikosit) (Quit: The Lounge - https://thelounge.chat)
23:54:37 Tisoxin joins (~Ikosit@user/ikosit)
23:57:40 × mmhat quits (~mmh@p200300f1c706a2b6ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1)

All times are in UTC on 2024-03-26.