2024/03/26

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