2023/05/27

2023-05-27 00:06:15 +0200 <dmj`> is there a QQ library for .proto files ?
2023-05-27 00:11:02 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-27 00:13:32 +0200jil`(~user@vps-15050500.vps.ovh.net) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.2))
2023-05-27 00:13:46 +0200jil(~user@vps-15050500.vps.ovh.net)
2023-05-27 00:19:29 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-05-27 00:21:53 +0200son0p(~ff@181.136.122.143)
2023-05-27 00:22:07 +0200shapr(~user@2600:1700:c640:3100:55f:2555:501d:44ae)
2023-05-27 00:24:46 +0200zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Read error: Connection reset by peer)
2023-05-27 00:25:03 +0200zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2023-05-27 00:27:25 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-05-27 00:28:56 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-05-27 00:37:29 +0200nick__(~nick@wsip-174-78-110-18.pn.at.cox.net) (Ping timeout: 246 seconds)
2023-05-27 00:38:00 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-05-27 00:42:01 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-05-27 00:43:34 +0200tom_(~tom@host81-151-255-71.range81-151.btcentralplus.com)
2023-05-27 00:45:18 +0200machinedgod(~machinedg@46.188.225.66) (Ping timeout: 265 seconds)
2023-05-27 00:47:08 +0200acidjnk_new(~acidjnk@p200300d6e7072f242dfdc2b5ef6845c3.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-27 00:47:47 +0200acidjnk(~acidjnk@p200300d6e7072f24316225cd2ab6c884.dip0.t-ipconnect.de)
2023-05-27 00:48:47 +0200zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Ping timeout: 264 seconds)
2023-05-27 00:49:33 +0200emmanuelux_(~emmanuelu@user/emmanuelux)
2023-05-27 00:50:45 +0200gmg(~user@user/gehmehgeh)
2023-05-27 00:52:16 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 248 seconds)
2023-05-27 00:57:07 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2023-05-27 01:02:48 +0200kluk(~arrowhead@cpe-74-66-76-151.nyc.res.rr.com)
2023-05-27 01:06:49 +0200Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-05-27 01:12:49 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-27 01:15:03 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe)
2023-05-27 01:16:47 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-05-27 01:17:03 +0200 <ghostbuster> ok back to where I was on tuesday
2023-05-27 01:19:30 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 01:23:01 +0200mauke_(~mauke@user/mauke)
2023-05-27 01:23:07 +0200ubert(~Thunderbi@p200300ecdf000282dd9d478f6a8ca7b2.dip0.t-ipconnect.de)
2023-05-27 01:23:58 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 265 seconds)
2023-05-27 01:24:31 +0200mauke(~mauke@user/mauke) (Ping timeout: 240 seconds)
2023-05-27 01:24:31 +0200mauke_mauke
2023-05-27 01:25:08 +0200acidjnk(~acidjnk@p200300d6e7072f24316225cd2ab6c884.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-27 01:33:08 +0200ubert(~Thunderbi@p200300ecdf000282dd9d478f6a8ca7b2.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-27 01:42:27 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2023-05-27 01:46:08 +0200dtman34(~dtman34@76.156.89.180) (Ping timeout: 240 seconds)
2023-05-27 01:48:55 +0200elmklod(~Elm@94.25.164.113) (Quit: Leaving)
2023-05-27 01:50:10 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-27 01:52:54 +0200nate2(~nate@98.45.169.16)
2023-05-27 01:53:51 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-05-27 01:54:28 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-27 01:57:28 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-27 02:00:35 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::9c24)
2023-05-27 02:02:45 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 02:02:59 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-05-27 02:04:00 +0200 <bratwurst> so i'm looking at a function from v4l2 called withFrame. it takes a function '(Ptr a -> Int -> IO b)'
2023-05-27 02:04:07 +0200califax(~califax@user/califx)
2023-05-27 02:04:16 +0200 <bratwurst> my question is what would i use for a?
2023-05-27 02:04:32 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-05-27 02:04:55 +0200 <bratwurst> i don't know where to find examples of people using the v4l2 library so I'm confused as to how things work here
2023-05-27 02:05:43 +0200 <bratwurst> it calls a function v4l2_read which has type 'CInt -> Ptr a -> CSize -> IO CInt'
2023-05-27 02:06:07 +0200 <bratwurst> so i would use a c-like type?
2023-05-27 02:06:45 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 02:13:35 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-05-27 02:19:20 +0200pavonia(~user@user/siracusa)
2023-05-27 02:19:36 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-27 02:19:36 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-27 02:19:36 +0200wroathe(~wroathe@user/wroathe)
2023-05-27 02:23:08 +0200kriity(~kriity@c-76-155-235-153.hsd1.co.comcast.net)
2023-05-27 02:28:06 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe) (Quit: Konversation terminated!)
2023-05-27 02:28:30 +0200 <c_wraith> bratwurst: that looks like it'd be a void* in C
2023-05-27 02:29:35 +0200abrantesasf(~abrantesa@177.137.232.92) (Ping timeout: 240 seconds)
2023-05-27 02:30:00 +0200abrantesasf(~abrantesa@177.137.232.90)
2023-05-27 02:31:57 +0200 <c_wraith> bratwurst: looking at the source... I have no idea why that's unbounded. It looks like it expects you to know what the memory layout for that ImageFormat is, and use it correctly. That's a basically untyped interface. Not very haskell-like at all.
2023-05-27 02:32:13 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 02:33:27 +0200dtman34(~dtman34@2601:447:d000:93c9:e022:89b6:5591:cbde)
2023-05-27 02:34:09 +0200kriity(~kriity@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Client closed)
2023-05-27 02:36:08 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 02:37:01 +0200 <c_wraith> bratwurst: so the `Ptr a' value is a buffer containing the captured image data. The Int is the size of the buffer. You can treat the buffer as any type you like, but things like Word8 seem to be the most primitive interface
2023-05-27 02:38:40 +0200Nosrep(~Nosrep@user/nosrep)
2023-05-27 02:39:35 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds)
2023-05-27 02:40:34 +0200euandreh(~Thunderbi@189.6.18.7)
2023-05-27 02:46:46 +0200 <bratwurst> so i have to figure out what format the buffer will have and go from there. ok thank you that helps
2023-05-27 02:53:21 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 02:57:49 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 256 seconds)
2023-05-27 03:00:16 +0200jero98772(~jero98772@2800:484:1d84:9000:8822:84bd:a4f4:947f) (Ping timeout: 248 seconds)
2023-05-27 03:10:21 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-27 03:14:05 +0200jero98772(~jero98772@190.158.28.80)
2023-05-27 03:16:25 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 03:16:32 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-27 03:18:31 +0200abrantesasf(~abrantesa@177.137.232.90) (Remote host closed the connection)
2023-05-27 03:21:35 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 03:27:07 +0200use-value1(~Thunderbi@2a00:23c6:8a03:2f01:ddaa:9bff:1a38:a342)
2023-05-27 03:27:42 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:2dc5:45f3:ebf7:b99a) (Ping timeout: 265 seconds)
2023-05-27 03:27:42 +0200use-value1use-value
2023-05-27 03:29:50 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 03:30:23 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-05-27 03:32:10 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-27 03:34:01 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 03:34:56 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2023-05-27 03:35:43 +0200koz_(~koz@121.99.240.58)
2023-05-27 03:35:44 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-27 03:35:44 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2023-05-27 03:36:07 +0200Cheery_(~cheery@server-239-7.tentacle.cloud)
2023-05-27 03:36:09 +0200stilgart(~Christoph@chezlefab.net)
2023-05-27 03:36:16 +0200barrucad1(~barrucadu@carcosa.barrucadu.co.uk)
2023-05-27 03:36:19 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2023-05-27 03:36:19 +0200leeb-(~leeb@tk2-243-31079.vs.sakura.ne.jp)
2023-05-27 03:36:30 +0200dfordvm(~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
2023-05-27 03:37:19 +0200int-e_(~noone@int-e.eu)
2023-05-27 03:37:27 +0200bah_(~bah@l1.tel)
2023-05-27 03:37:35 +0200int-e(~noone@int-e.eu) (Killed (NickServ (GHOST command used by int-e_)))
2023-05-27 03:37:45 +0200int-e_int-e
2023-05-27 03:37:55 +0200Hecate_(~mariposa@user/hecate)
2023-05-27 03:37:57 +0200alpm(~alp@user/alp)
2023-05-27 03:38:40 +0200mcglk(~mcglk@131.191.19.145) (Ping timeout: 248 seconds)
2023-05-27 03:39:27 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-27 03:40:53 +0200mcglk(~mcglk@131.191.19.145)
2023-05-27 03:42:58 +0200lav(~pi@wikipedia/maddy-from-celeste) (*.net *.split)
2023-05-27 03:42:58 +0200canta1(~canta@cvm0.d5k.one) (*.net *.split)
2023-05-27 03:42:58 +0200dfordivam1(~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (*.net *.split)
2023-05-27 03:42:58 +0200ridcully_(~ridcully@p57b52f2c.dip0.t-ipconnect.de) (*.net *.split)
2023-05-27 03:42:58 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split)
2023-05-27 03:42:58 +0200meejah(~meejah@rutas.meejah.ca) (*.net *.split)
2023-05-27 03:42:58 +0200adium(adium@user/adium) (*.net *.split)
2023-05-27 03:42:58 +0200heath1(~heath@user/heath) (*.net *.split)
2023-05-27 03:42:58 +0200noctux1(vBYKluURgE@karif.server-speed.net) (*.net *.split)
2023-05-27 03:42:58 +0200Cheery(~cheery@server-239-7.tentacle.cloud) (*.net *.split)
2023-05-27 03:42:58 +0200stilgart_(~Christoph@chezlefab.net) (*.net *.split)
2023-05-27 03:42:58 +0200lyxia(~lyxia@poisson.chat) (*.net *.split)
2023-05-27 03:42:58 +0200koz(~koz@121.99.240.58) (*.net *.split)
2023-05-27 03:42:58 +0200andjjj23(~irc@107.170.228.47) (*.net *.split)
2023-05-27 03:42:58 +0200mjacob(~mjacob@adrastea.uberspace.de) (*.net *.split)
2023-05-27 03:42:58 +0200xerox(~edi@user/edi) (*.net *.split)
2023-05-27 03:42:58 +0200kosmikus(~kosmikus@nullzig.kosmikus.org) (*.net *.split)
2023-05-27 03:42:58 +0200user___(~user@162.255.84.96) (*.net *.split)
2023-05-27 03:42:58 +0200bcoppens(~bartcopp@vpn2.bartcoppens.be) (*.net *.split)
2023-05-27 03:42:58 +0200alp(~alp@user/alp) (*.net *.split)
2023-05-27 03:42:58 +0200opqdonut(opqdonut@pseudo.fixme.fi) (*.net *.split)
2023-05-27 03:42:58 +0200bah(~bah@l1.tel) (*.net *.split)
2023-05-27 03:42:58 +0200leeb(~leeb@tk2-243-31079.vs.sakura.ne.jp) (*.net *.split)
2023-05-27 03:42:58 +0200bsima(~bsima@143.198.118.179) (*.net *.split)
2023-05-27 03:42:58 +0200Hecate(~mariposa@user/hecate) (*.net *.split)
2023-05-27 03:42:59 +0200leeb-leeb
2023-05-27 03:44:28 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::9c24) (Ping timeout: 240 seconds)
2023-05-27 03:47:32 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-05-27 03:48:04 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2023-05-27 03:48:14 +0200lav(~pi@wikipedia/maddy-from-celeste)
2023-05-27 03:48:14 +0200canta1(~canta@cvm0.d5k.one)
2023-05-27 03:48:14 +0200ridcully_(~ridcully@p57b52f2c.dip0.t-ipconnect.de)
2023-05-27 03:48:14 +0200meejah(~meejah@rutas.meejah.ca)
2023-05-27 03:48:14 +0200adium(adium@user/adium)
2023-05-27 03:48:14 +0200heath1(~heath@user/heath)
2023-05-27 03:48:14 +0200noctux1(vBYKluURgE@karif.server-speed.net)
2023-05-27 03:48:14 +0200lyxia(~lyxia@poisson.chat)
2023-05-27 03:48:14 +0200mjacob(~mjacob@adrastea.uberspace.de)
2023-05-27 03:48:14 +0200xerox(~edi@user/edi)
2023-05-27 03:48:14 +0200kosmikus(~kosmikus@nullzig.kosmikus.org)
2023-05-27 03:48:14 +0200user___(~user@162.255.84.96)
2023-05-27 03:48:14 +0200bcoppens(~bartcopp@vpn2.bartcoppens.be)
2023-05-27 03:48:14 +0200opqdonut(opqdonut@pseudo.fixme.fi)
2023-05-27 03:48:15 +0200bsima(~bsima@143.198.118.179)
2023-05-27 03:49:08 +0200andjjj23(~irc@107.170.228.47)
2023-05-27 03:49:10 +0200rodental(~rodental@38.146.5.222)
2023-05-27 03:50:55 +0200vandita(~vandit@78-131-74-81.pool.digikabel.hu) (Ping timeout: 268 seconds)
2023-05-27 03:51:56 +0200jludwig(~justin@li657-110.members.linode.com) (Quit: ZNC - https://znc.in)
2023-05-27 03:52:23 +0200vandita(~vandit@94-21-48-62.pool.digikabel.hu)
2023-05-27 03:52:55 +0200jludwig(~justin@li657-110.members.linode.com)
2023-05-27 03:56:23 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 240 seconds)
2023-05-27 03:58:33 +0200xff0x(~xff0x@178.255.149.135)
2023-05-27 04:05:08 +0200td_(~td@i53870934.versanet.de) (Ping timeout: 240 seconds)
2023-05-27 04:06:03 +0200jero98772(~jero98772@190.158.28.80) (Read error: Connection reset by peer)
2023-05-27 04:07:09 +0200td_(~td@i5387090C.versanet.de)
2023-05-27 04:15:07 +0200Guest56(~Guest56@2600:6c5e:527f:9c3b:bc9c:4e9d:7cc1:716)
2023-05-27 04:17:04 +0200xff0x(~xff0x@178.255.149.135) (Ping timeout: 248 seconds)
2023-05-27 04:18:59 +0200xff0x(~xff0x@2405:6580:b080:900:7537:a7d1:a60d:3e58)
2023-05-27 04:20:55 +0200jjb(~jjb@user/jjb) (Remote host closed the connection)
2023-05-27 04:23:44 +0200jero98772(~jero98772@190.158.28.80)
2023-05-27 04:26:04 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 04:30:47 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 264 seconds)
2023-05-27 04:41:50 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7)
2023-05-27 04:43:20 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 04:45:20 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-27 04:45:48 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-27 04:47:28 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 04:50:08 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2023-05-27 04:52:05 +0200Guest56(~Guest56@2600:6c5e:527f:9c3b:bc9c:4e9d:7cc1:716) (Quit: Client closed)
2023-05-27 04:52:30 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-05-27 04:54:51 +0200 <probie> If I export a foreign C call from a module, can I import that same foreign call from a different module? (not at a machine where I can test right now, but perhaps someone knows off the top of their head)
2023-05-27 04:58:42 +0200 <EvanR> if you couldn't import something, what is the point of exporting it
2023-05-27 05:03:24 +0200td_(~td@i5387090C.versanet.de) (Ping timeout: 265 seconds)
2023-05-27 05:04:33 +0200phma(phma@2001:5b0:2172:dd28:7cbf:d1f6:57c5:3699) (Read error: Connection reset by peer)
2023-05-27 05:04:58 +0200phma(~phma@host-67-44-208-181.hnremote.net)
2023-05-27 05:05:13 +0200td_(~td@i53870921.versanet.de)
2023-05-27 05:07:09 +0200 <int-e> phma: Yes, you can.
2023-05-27 05:11:09 +0200Benzi-Junior(~BenziJuni@88-149-64-86.du.xdsl.is) (Quit: ZNC 1.8.2 - https://znc.in)
2023-05-27 05:16:17 +0200 <int-e> probie: Err, that was for you. Note that it'll be rather expensive... calling the exported/imported function will spawn a new (bound) Haskell thread.
2023-05-27 05:19:48 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2023-05-27 05:20:05 +0200jero98772(~jero98772@190.158.28.80) (Ping timeout: 240 seconds)
2023-05-27 05:20:46 +0200 <int-e> probie: In fact, `forkOS` is essentially implemented through this kind of exporting and importing the same Haskell function: https://hackage.haskell.org/package/base-4.18.0.0/docs/src/Control.Concurrent.html#line-308 ff.
2023-05-27 05:23:34 +0200 <int-e> Err, no? It's `runInBoundThread` that does that, hmm.
2023-05-27 05:25:00 +0200 <int-e> So it would be true if `forkOS` were implemented in terms of `forkIO` and `runInBoundThread` but I guess that isn't done because it leaves an extra idle Haskell thread around.
2023-05-27 05:27:36 +0200 <phma> int-e: I can what?
2023-05-27 05:28:28 +0200 <int-e> phma: tab completion failed me
2023-05-27 05:29:00 +0200 <probie> I think it may be unneeded for what I want to do. I want to be able to "call" a pinned ByteArray#.
2023-05-27 05:30:39 +0200 <probie> I can probably just use byteArrayContents# and then wrap it in a FunPtr, along with adding the relevant foreign import ccall "dynamic" boilerplate
2023-05-27 05:31:35 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-27 05:32:05 +0200 <int-e> Yeah that should work; I don't see the export/import dance helping you with that.
2023-05-27 05:32:27 +0200jero98772(~jero98772@190.158.28.80)
2023-05-27 05:33:14 +0200 <int-e> But as the `runInBoundThread` thing shows, it is an interesting little gadget nonetheless.
2023-05-27 05:35:26 +0200 <int-e> Related... hs-plugins needs similar trickery.
2023-05-27 05:41:35 +0200xff0x(~xff0x@2405:6580:b080:900:7537:a7d1:a60d:3e58) (Ping timeout: 264 seconds)
2023-05-27 05:41:59 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net)
2023-05-27 05:42:14 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 05:46:25 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 05:50:39 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-27 05:54:25 +0200nate2(~nate@98.45.169.16)
2023-05-27 05:54:38 +0200RedNifre(~RedNifre@dslb-088-068-116-161.088.068.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2023-05-27 05:54:48 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-27 05:56:50 +0200rf(~rf@2605:59c8:179c:f610:c3f5:9614:a40d:c16e) (Remote host closed the connection)
2023-05-27 05:59:09 +0200nate2(~nate@98.45.169.16) (Ping timeout: 256 seconds)
2023-05-27 06:07:28 +0200RedNifre(~RedNifre@dslb-002-206-121-134.002.206.pools.vodafone-ip.de)
2023-05-27 06:14:48 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7) (Ping timeout: 250 seconds)
2023-05-27 06:28:05 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7)
2023-05-27 06:29:59 +0200jero98772(~jero98772@190.158.28.80) (Ping timeout: 240 seconds)
2023-05-27 06:30:48 +0200Lycurgus(~juan@user/Lycurgus)
2023-05-27 06:37:20 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7) (Ping timeout: 248 seconds)
2023-05-27 06:38:06 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7)
2023-05-27 06:40:20 +0200opqdonut(opqdonut@pseudo.fixme.fi) (Ping timeout: 260 seconds)
2023-05-27 06:40:44 +0200opqdonut(opqdonut@pseudo.fixme.fi)
2023-05-27 06:40:46 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net)
2023-05-27 06:44:08 +0200jero98772(~jero98772@190.158.28.80)
2023-05-27 06:47:17 +0200shriekingnoise_(~shrieking@186.137.175.87) (Ping timeout: 268 seconds)
2023-05-27 06:47:58 +0200trev(~trev@user/trev)
2023-05-27 06:48:10 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7) (Ping timeout: 250 seconds)
2023-05-27 06:52:58 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7)
2023-05-27 07:00:46 +0200jakzale_(uid499518@user/jakzale) (Quit: Connection closed for inactivity)
2023-05-27 07:02:41 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2023-05-27 07:07:09 +0200vandita(~vandit@94-21-48-62.pool.digikabel.hu) (Ping timeout: 256 seconds)
2023-05-27 07:09:01 +0200vandita(~vandit@176-241-45-188.pool.digikabel.hu)
2023-05-27 07:13:01 +0200mei(~mei@user/mei) (Quit: mei)
2023-05-27 07:16:30 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 07:17:57 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-05-27 07:18:04 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-05-27 07:19:48 +0200shapr(~user@2600:1700:c640:3100:55f:2555:501d:44ae) (Ping timeout: 240 seconds)
2023-05-27 07:21:12 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 268 seconds)
2023-05-27 07:25:01 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7) (Ping timeout: 240 seconds)
2023-05-27 07:36:08 +0200 <sm> I see I used https://hackage.haskell.org/package/base-prelude once, trying to reduce import boilerplate. It tries to provide as much of base as possible with a single import (plus a line disabling Prelude). I have questions two:
2023-05-27 07:36:08 +0200 <sm> 1. is there a compile or run time performance issue with having so many things imported to namespace ?
2023-05-27 07:36:08 +0200 <sm> 2. relude seems more popular, but doesn't seem to provide the low-import-noise benefit, as it is divided into many modules - true ?
2023-05-27 07:36:45 +0200 <sm> 3. any other prelude you'd recommend for reducing import noise ?
2023-05-27 07:39:59 +0200jero98772(~jero98772@190.158.28.80) (Ping timeout: 240 seconds)
2023-05-27 07:43:40 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 07:47:34 +0200wiosna(~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Quit: leaving)
2023-05-27 07:47:45 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 07:48:08 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-27 07:49:10 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-27 07:52:17 +0200alecs(~alecs@151.82.2.124)
2023-05-27 07:53:59 +0200jero98772(~jero98772@190.158.28.80)
2023-05-27 08:03:19 +0200 <probie> At least in older versions of GHC, I used to get better code size when I explicitly imported only the prelude functions/types I needed. I also vaguely remember there being a way to make GHC split out each function into a separate object file which mitigates this (at the cost of higher compile time)
2023-05-27 08:06:06 +0200kupi(uid212005@id-212005.hampstead.irccloud.com)
2023-05-27 08:12:39 +0200jinsun__(~jinsun@user/jinsun)
2023-05-27 08:12:39 +0200jinsunGuest1374
2023-05-27 08:12:39 +0200Guest1374(~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2023-05-27 08:12:39 +0200jinsun__jinsun
2023-05-27 08:12:49 +0200 <geekosaur> -fsplit-objs is deprecated, because -fsplit-sections is better and faster
2023-05-27 08:13:02 +0200 <geekosaur> (on platforms which support it)
2023-05-27 08:13:19 +0200 <geekosaur> sorry, no -f, just -split-{objs,sections}
2023-05-27 08:19:29 +0200 <sm> I converted this script from base-prelude to relude. relude appears to provide more, since it has a dozen deps rather than just base, but in fact it seems to provide less of the basic stuff.
2023-05-27 08:19:29 +0200 <sm> This: import "base-prelude" BasePrelude
2023-05-27 08:19:36 +0200 <sm> became this:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/d1469b8128ecf6933b644d4494874cb871dd…>)
2023-05-27 08:23:58 +0200 <sm> it encouraged me to replace locale-dependent readFile' with a more explicit decodeUtf8 <$> readFileBS.. which I guess is positive
2023-05-27 08:24:44 +0200 <sm> also forced me to add a bunch of toString ... toText if I want to work with Strings
2023-05-27 08:27:05 +0200 <sm> maybe you need base-prelude + relude if you want a really batteries-included setup
2023-05-27 08:34:06 +0200falafel(~falafel@2603-8000-d700-115c-375f-6e24-bf15-2487.res6.spectrum.com)
2023-05-27 08:36:28 +0200alecs(~alecs@151.82.2.124) (Ping timeout: 240 seconds)
2023-05-27 08:38:36 +0200alecs(~alecs@151.36.175.147)
2023-05-27 08:40:56 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-27 08:41:54 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-27 08:42:21 +0200mei(~mei@user/mei)
2023-05-27 08:47:19 +0200Lycurgus(~juan@user/Lycurgus)
2023-05-27 08:47:23 +0200acidjnk(~acidjnk@p200300d6e7072f96316225cd2ab6c884.dip0.t-ipconnect.de)
2023-05-27 08:50:01 +0200jero98772(~jero98772@190.158.28.80) (Ping timeout: 240 seconds)
2023-05-27 08:51:34 +0200mcglk(~mcglk@131.191.19.145) (Read error: Connection reset by peer)
2023-05-27 08:52:51 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 08:53:43 +0200machinedgod(~machinedg@46.188.225.66)
2023-05-27 08:54:09 +0200mcglk(~mcglk@131.191.19.145)
2023-05-27 08:54:43 +0200kluk(~arrowhead@cpe-74-66-76-151.nyc.res.rr.com) (Remote host closed the connection)
2023-05-27 08:56:32 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-05-27 08:57:59 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 08:58:41 +0200ec(~ec@gateway/tor-sasl/ec)
2023-05-27 09:01:41 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 09:02:15 +0200jero98772(~jero98772@190.158.28.80)
2023-05-27 09:03:51 +0200ubert(~Thunderbi@p200300ecdf000282b84f8c5708931366.dip0.t-ipconnect.de)
2023-05-27 09:06:22 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-05-27 09:07:23 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
2023-05-27 09:10:41 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-05-27 09:11:11 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 09:12:29 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-05-27 09:12:39 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-05-27 09:27:28 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 248 seconds)
2023-05-27 09:29:01 +0200elmklod(~Elm@94.25.164.115)
2023-05-27 09:29:24 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2023-05-27 09:31:28 +0200ubert(~Thunderbi@p200300ecdf000282b84f8c5708931366.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-27 09:33:18 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de)
2023-05-27 09:43:10 +0200Hecate_Hecate
2023-05-27 09:48:39 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2023-05-27 09:50:53 +0200oo_miguel(~Thunderbi@77.252.47.84)
2023-05-27 09:51:15 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-27 09:51:52 +0200ubert(~Thunderbi@p200300ecdf000282072de7d7af033fca.dip0.t-ipconnect.de)
2023-05-27 09:55:31 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-27 09:55:57 +0200nate2(~nate@98.45.169.16)
2023-05-27 09:56:12 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-05-27 09:59:43 +0200oo_miguel(~Thunderbi@77.252.47.84) (Quit: oo_miguel)
2023-05-27 10:00:30 +0200oo_miguel(~Thunderbi@77.252.47.84)
2023-05-27 10:00:31 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-27 10:02:03 +0200CiaoSen(~Jura@dynamic-046-114-221-062.46.114.pool.telefonica.de)
2023-05-27 10:11:04 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd)
2023-05-27 10:13:59 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe)
2023-05-27 10:15:28 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd) (Ping timeout: 248 seconds)
2023-05-27 10:15:49 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-05-27 10:16:33 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-27 10:16:48 +0200machinedgod(~machinedg@46.188.225.66) (Ping timeout: 240 seconds)
2023-05-27 10:18:49 +0200kuribas(~user@ptr-17d51emeqlp3mkf19tm.18120a2.ip6.access.telenet.be)
2023-05-27 10:21:02 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-05-27 10:34:38 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2023-05-27 10:50:03 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-05-27 10:53:06 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-05-27 10:54:23 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-05-27 10:54:45 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-05-27 10:54:47 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2023-05-27 10:57:13 +0200Lord_of_Life_Lord_of_Life
2023-05-27 11:00:01 +0200luffy[m](~luffyinte@2001:470:69fc:105::3:4cd5) (Remote host closed the connection)
2023-05-27 11:02:46 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2023-05-27 11:05:55 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-05-27 11:13:01 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de)
2023-05-27 11:15:16 +0200gmg(~user@user/gehmehgeh)
2023-05-27 11:22:28 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 240 seconds)
2023-05-27 11:25:36 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-05-27 11:31:13 +0200falafel(~falafel@2603-8000-d700-115c-375f-6e24-bf15-2487.res6.spectrum.com) (Ping timeout: 256 seconds)
2023-05-27 11:31:21 +0200alecs(~alecs@151.36.175.147) (Read error: Connection reset by peer)
2023-05-27 11:33:23 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de) (Ping timeout: 246 seconds)
2023-05-27 11:33:25 +0200CiaoSen(~Jura@dynamic-046-114-221-062.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-05-27 11:36:57 +0200alecs(~alecs@host-82-48-235-203.retail.telecomitalia.it)
2023-05-27 11:43:40 +0200falafel(~falafel@2603-8000-d700-115c-9f2e-bd7d-5866-de73.res6.spectrum.com)
2023-05-27 11:44:04 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-05-27 11:46:31 +0200ub(~Thunderbi@p548c91e0.dip0.t-ipconnect.de)
2023-05-27 11:47:01 +0200ubert(~Thunderbi@p200300ecdf000282072de7d7af033fca.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-27 11:47:01 +0200ububert
2023-05-27 11:48:01 +0200falafel(~falafel@2603-8000-d700-115c-9f2e-bd7d-5866-de73.res6.spectrum.com) (Ping timeout: 240 seconds)
2023-05-27 11:58:31 +0200mechap(~mechap@user/mechap)
2023-05-27 12:16:38 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de)
2023-05-27 12:20:06 +0200zenstoic(uid461840@id-461840.hampstead.irccloud.com)
2023-05-27 12:22:16 +0200alecs(~alecs@host-82-48-235-203.retail.telecomitalia.it) (Ping timeout: 250 seconds)
2023-05-27 12:40:39 +0200machinedgod(~machinedg@46.188.225.66)
2023-05-27 12:46:35 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de) (Ping timeout: 256 seconds)
2023-05-27 12:53:24 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 12:56:30 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-05-27 12:56:57 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-05-27 12:57:28 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 13:08:32 +0200Benzi-Junior(~BenziJuni@88-149-64-86.du.xdsl.is)
2023-05-27 13:14:48 +0200machinedgod(~machinedg@46.188.225.66) (Ping timeout: 240 seconds)
2023-05-27 13:21:12 +0200barrucad1barrucadu
2023-05-27 13:22:03 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 13:29:05 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 256 seconds)
2023-05-27 13:32:36 +0200__monty__(~toonn@user/toonn)
2023-05-27 13:38:27 +0200oblivious(~oblivious@183.108.191.92.dynamic.jazztel.es)
2023-05-27 13:40:04 +0200oblivious(~oblivious@183.108.191.92.dynamic.jazztel.es) (Client Quit)
2023-05-27 13:46:49 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 13:50:48 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 13:57:42 +0200nate2(~nate@98.45.169.16)
2023-05-27 14:00:09 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-05-27 14:00:27 +0200hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-05-27 14:02:48 +0200nate2(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2023-05-27 14:10:55 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 14:13:59 +0200oo_miguel(~Thunderbi@77.252.47.84) (Ping timeout: 240 seconds)
2023-05-27 14:15:05 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 246 seconds)
2023-05-27 14:18:59 +0200gruff(uid459651@id-459651.lymington.irccloud.com)
2023-05-27 14:26:49 +0200zeenk(~zeenk@2a02:2f04:a105:f00::7fe) (Quit: Konversation terminated!)
2023-05-27 14:31:13 +0200mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-05-27 14:32:26 +0200 <Profpatsch> I have an Applicative validator/parser which is also Selective; I want to check if two of the inputs are the same; can I do that with just the Selective interface?
2023-05-27 14:38:27 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-05-27 14:45:30 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de)
2023-05-27 14:46:11 +0200 <ncf> show some code
2023-05-27 14:47:13 +0200 <Profpatsch> x = do { a <- get "a"; b <- get "b"; pure Foo{..} }
2023-05-27 14:48:03 +0200 <Profpatsch> a and b should be the same; either of them may be returned, but the parser should fail with an error for "b" iff they are not the same
2023-05-27 14:48:23 +0200 <ncf> guard (a == b)
2023-05-27 14:48:37 +0200 <Profpatsch> It’s not Alternative
2023-05-27 14:49:02 +0200 <Profpatsch> It’s Functor, Applicative and Selective
2023-05-27 14:49:42 +0200 <ncf> how do you fail then?
2023-05-27 14:49:55 +0200 <Profpatsch> In particular, every failing parser needs to have a reference to the field it is parsing, because the failure has to appear in the form field that caused the error
2023-05-27 14:50:15 +0200 <Profpatsch> ncf: in Validation (Id, Error) a
2023-05-27 14:50:30 +0200 <Profpatsch> via validation-selective
2023-05-27 14:50:58 +0200 <Profpatsch> I feel like Selective should provide the ability, but I can also go this on foot I think
2023-05-27 14:51:51 +0200mechap(~mechap@user/mechap)
2023-05-27 14:53:50 +0200mechap(~mechap@user/mechap) (Client Quit)
2023-05-27 14:54:27 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 14:56:02 +0200 <[exa]> Profpatsch: you might need to smuggle an Either there manually
2023-05-27 14:56:45 +0200mechap(~mechap@user/mechap)
2023-05-27 14:57:36 +0200 <ncf> i still don't understand what this has to do with Selective. failureUnless (a == b) (yourFieldId, "boo")
2023-05-27 14:58:25 +0200 <Profpatsch> a and b come from a Selective m
2023-05-27 14:58:30 +0200 <Profpatsch> not monadic
2023-05-27 14:59:32 +0200 <Profpatsch> [exa]: yeah, that’s my guess as well
2023-05-27 15:00:42 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-4593-7814-42d6-7053.res6.spectrum.com)
2023-05-27 15:01:44 +0200 <Profpatsch> Or I really need join anyway
2023-05-27 15:01:45 +0200 <[exa]> Profpatsch: like, you can start with (==) <$> get "a" <*> get "b", then convert it to Either, and on that you can do the select
2023-05-27 15:02:09 +0200 <[Leary]> `fromMaybeS (Failure err) do { a <- get "a"; b <- get "b"; pure $ guard (a == b) $> b }` perhaps?
2023-05-27 15:02:10 +0200gurkenglas(~user@dynamic-046-114-177-161.46.114.pool.telefonica.de) (Ping timeout: 250 seconds)
2023-05-27 15:02:38 +0200 <Profpatsch> But guard is Alternative, no?
2023-05-27 15:02:44 +0200 <[Leary]> That's for Maybe.
2023-05-27 15:02:49 +0200 <Profpatsch> Ah
2023-05-27 15:03:11 +0200 <[exa]> Profpatsch: you generally don't need join unless you use the partial results to generate the shape of the computation that follows
2023-05-27 15:03:37 +0200 <Profpatsch> [exa]: yeah, exactly that’s why I’m trying the Selective approach
2023-05-27 15:05:00 +0200 <[exa]> maybe try to draft what result you want to get out, then smash _ in the middle and do the type tetris
2023-05-27 15:06:20 +0200 <Profpatsch> [Leary]: I think that is getting real close; now I only have the remaining problem that I can’t expose a direct primitive to construct `Failure`, that should only fall out of trying to parse the field itself wtih `get`
2023-05-27 15:08:25 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 15:13:31 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
2023-05-27 15:15:03 +0200vandita(~vandit@176-241-45-188.pool.digikabel.hu) (Ping timeout: 256 seconds)
2023-05-27 15:15:45 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd)
2023-05-27 15:16:29 +0200vandita(~vandit@fibhost-66-106-96.fibernet.hu)
2023-05-27 15:20:01 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd) (Ping timeout: 240 seconds)
2023-05-27 15:25:47 +0200 <[exa]> Profpatsch: btw, just that I understand the whole thing -- what is the effect that will be allowed to be skipped if the things are equal (or not equal)?
2023-05-27 15:25:49 +0200acidjnk(~acidjnk@p200300d6e7072f96316225cd2ab6c884.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-05-27 15:29:17 +0200 <Profpatsch> [exa]: Just (Failure (fieldId, errmsg))
2023-05-27 15:29:27 +0200 <Profpatsch> [exa]: Failure (fieldId, errmsg)
2023-05-27 15:35:55 +0200SoF(~skius@user/skius) (Quit: Ping timeout (120 seconds))
2023-05-27 15:36:45 +0200 <Profpatsch> Okay, I solved it “on foot” with your snippet [Leary], the code is not pretty but I think it kinda works
2023-05-27 15:36:48 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds)
2023-05-27 15:37:00 +0200 <Profpatsch> In particular the form is rendered correctly with the errors at the right places :)
2023-05-27 15:37:13 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-05-27 15:37:24 +0200 <ncf> post?
2023-05-27 15:37:37 +0200ncfis still massively confused about the whole thing but is probably just being dense
2023-05-27 15:39:09 +0200 <[exa]> oh that's for web forms? makes sense now
2023-05-27 15:40:03 +0200 <Profpatsch> ncf: something like this: https://paste.tomsmeding.com/4RxpFDDj
2023-05-27 15:40:48 +0200 <Profpatsch> [exa]: yeah, I’m trying to see how far I can go with this, digestive-functors is a bit much for my tastes
2023-05-27 15:41:59 +0200 <Profpatsch> In particular, one should distinguish between programming errors (i.e. wrong field name) and user errors, hence the two different types composed together.
2023-05-27 15:42:55 +0200CiaoSen(~Jura@145.224.73.17)
2023-05-27 15:48:12 +0200 <[exa]> Profpatsch: what would be wrong with: ((\a b -> if a == b then Right a else Left a) <$> get "a" <*> get "b") S.<*? Failure ["not same"]
2023-05-27 15:48:20 +0200 <[exa]> (S is Control.Selective)
2023-05-27 15:48:38 +0200 <[exa]> the failures from the gets propagate and prevent the comparison failure from triggering
2023-05-27 15:48:40 +0200 <Profpatsch> [exa]: Is that the fromMaybeS just reformulated?
2023-05-27 15:48:45 +0200 <[exa]> likely
2023-05-27 15:49:18 +0200 <[exa]> ah yeah, good. :D
2023-05-27 15:49:20 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-05-27 15:49:22 +0200 <Profpatsch> yeah pretty sure it is? I guess?
2023-05-27 15:50:04 +0200 <Profpatsch> THe main issue I have is that I have to provide a function like failValidation :: f a
2023-05-27 15:50:06 +0200 <[exa]> that explains the best shortcut for the abysmal-quality if there
2023-05-27 15:50:57 +0200 <[exa]> Profpatsch: what's wrong with `failValidation x = Failure [x]` ?
2023-05-27 15:51:35 +0200vandita(~vandit@fibhost-66-106-96.fibernet.hu) (Ping timeout: 240 seconds)
2023-05-27 15:51:44 +0200 <Profpatsch> [exa]: Ideally there’d be some way of saying “validate this field by looking at some other field, but put the error into this field”; I mean I guess that’s what I’m doing in `aEqB`
2023-05-27 15:53:30 +0200vandita(~vandit@92-249-141-141.pool.digikabel.hu)
2023-05-27 15:53:39 +0200CiaoSen(~Jura@145.224.73.17) (Ping timeout: 268 seconds)
2023-05-27 15:54:12 +0200 <Profpatsch> It gets more complicated than that cause the multipart parser also supports files of course, in which case the form should re-populate the form value with the fielname I guess.
2023-05-27 15:54:27 +0200 <Profpatsch> In other cases with the original `value` string
2023-05-27 15:56:45 +0200 <Profpatsch> anyaway, next step is re-using these parsers for server-side validation after the fields lose focus
2023-05-27 15:57:53 +0200 <[exa]> hm so that routing information on "where this error belongs" is now stored in the label there.. what about something like bifunctorish `first changeLabel` ?
2023-05-27 15:59:49 +0200 <Profpatsch> [exa]: I don’t quite understand what you mean by that; the way I do it rn is that each form field html constuctor gets the whole list of errors and decides whether it should be displaying the error inputHtml :: Foldable f => FormField -> f (T2 "formFieldName" Text "error" Error) -> Html
2023-05-27 16:00:05 +0200 <ncf> i feel like the easiest would be to pass a predicate (== compare) to field'
2023-05-27 16:00:31 +0200 <Profpatsch> since FormField knows its own `name`
2023-05-27 16:01:14 +0200 <ncf> hm but maybe you need Monad for that
2023-05-27 16:02:25 +0200 <[exa]> Profpatsch: the interface would be like: displayTheErrorsAroundField @"asd" $ ...some validated stuff...
2023-05-27 16:03:00 +0200 <Profpatsch> [exa]: yeah, I had something like this in mind I guess …
2023-05-27 16:03:01 +0200 <[exa]> (for the validation, and later the html rendering may pick up the modified error locations)
2023-05-27 16:04:51 +0200 <[exa]> Profpatsch: btw selective in this case will only allow you to sanely skip validations that are impossible e.g. because there isn't enough data... Maybe you might want to bake a custom combinator for this (something like `allS`)
2023-05-27 16:06:09 +0200 <[exa]> as in: ifAllFieldsPresent ["a", "b", ...] $ \[a,b,...] -> if ... then Success ... else Failure ...
2023-05-27 16:06:47 +0200 <Profpatsch> [exa]: ah you mean the fromMaybeS isn’t actually doing anything here?
2023-05-27 16:07:18 +0200 <[exa]> it is only blocking the extra validation from firing (if others already failed)
2023-05-27 16:07:25 +0200 <Profpatsch> hm, but it has to
2023-05-27 16:07:44 +0200 <Profpatsch> As I said, I should probably go this on foot instead of via Selective :P
2023-05-27 16:08:11 +0200 <[exa]> with normal validation the extra check would fail too, so you would have "passwords not same" as an error because it was transitively triggered by the "get" failure.
2023-05-27 16:08:15 +0200 <Profpatsch> I haven’t yet found a case where using selective is nicer than adding custom combinator functions tbh.
2023-05-27 16:09:04 +0200 <[exa]> like, this ain't bad, but requires some effort to make it look nice
2023-05-27 16:11:54 +0200ryantrinkle(~ryantrink@140.174.243.224) (Remote host closed the connection)
2023-05-27 16:12:00 +0200 <Profpatsch> [exa]: it does seem to work though, if I say the second password field has to validate as an email, it will throw the email error, if I make it an email, it will throw the “have to be the same” error
2023-05-27 16:12:16 +0200 <Profpatsch> I guess that’s not the right semantics though, ideally both errors would be collected at the same time hm
2023-05-27 16:12:36 +0200 <[exa]> your may want an overall structure like: Result <$> get "field1" <* extraValidation1 <*> get "field2" <* extraValidation2; with extraValidationN things using the selective interface internally. The problem with applicatives/selectives is that you cannot send&re-use the values "around" easily as with full monads, which gets inconvenient esp. if you got used to monads
2023-05-27 16:12:45 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-05-27 16:13:00 +0200titibandit(~titibandi@user/titibandit)
2023-05-27 16:13:30 +0200 <[exa]> Profpatsch: for me it is collecting both errors if they both happen on the left side of the select (e.g., both fields are missing)
2023-05-27 16:16:37 +0200 <Profpatsch> yeah, but it definitely can’t be a Monad, because otherwise there’s no way to recapture the original values entered into the form.
2023-05-27 16:16:51 +0200 <Profpatsch> Hm, I guess it could be a best effort thing
2023-05-27 16:17:40 +0200euandreh(~Thunderbi@189.6.18.7)
2023-05-27 16:19:05 +0200 <Profpatsch> oh lol, now that I think about it, that won’t work anyway, because it only collects the values of fields that were wrong, not the others. So maybe I need These anyway, which would give be back my Monad instance
2023-05-27 16:21:46 +0200 <[exa]> Profpatsch: well Validation is about discarding the Success values (i.e., not having to produce them in the first place).... so maybe simply a different Selective would work
2023-05-27 16:23:46 +0200 <[exa]> like, morphology of the thing you have here looks like WriterT Either, instead you might want an EitherT Writer
2023-05-27 16:24:22 +0200hamzam3(~hamzam3@2a01:e0a:1ee:8c60:849e:cc8e:5242:786f)
2023-05-27 16:24:23 +0200 <[exa]> spoiler: combining errors is hard.
2023-05-27 16:25:22 +0200dsrt^(~dsrt@c-71-204-38-59.hsd1.ga.comcast.net)
2023-05-27 16:26:56 +0200 <Profpatsch> A Map wrapper with a monoid insteance that is (<>) = Map.mergeWith (<>) should work
2023-05-27 16:27:15 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-05-27 16:31:07 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 16:34:14 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-05-27 16:35:08 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 16:35:45 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-27 16:37:22 +0200gruff(uid459651@id-459651.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-05-27 16:37:38 +0200ddellacosta(~ddellacos@146.70.185.10)
2023-05-27 16:40:20 +0200Guest56(~Guest56@2600:6c5e:527f:9c3b:bc9c:4e9d:7cc1:716)
2023-05-27 16:51:15 +0200Guest56(~Guest56@2600:6c5e:527f:9c3b:bc9c:4e9d:7cc1:716) (Quit: Client closed)
2023-05-27 17:01:39 +0200euandreh(~Thunderbi@189.6.18.7) (Remote host closed the connection)
2023-05-27 17:07:58 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-05-27 17:08:53 +0200img(~img@user/img)
2023-05-27 17:13:25 +0200euandreh(~Thunderbi@189.6.18.7)
2023-05-27 17:14:48 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 17:15:52 +0200euandreh(~Thunderbi@189.6.18.7) (Remote host closed the connection)
2023-05-27 17:16:56 +0200euandreh(~Thunderbi@189.6.18.7)
2023-05-27 17:19:59 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 268 seconds)
2023-05-27 17:45:29 +0200euandreh(~Thunderbi@189.6.18.7) (Remote host closed the connection)
2023-05-27 17:48:27 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de)
2023-05-27 17:50:49 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd)
2023-05-27 17:54:21 +0200oo_miguel(~Thunderbi@77.252.47.84)
2023-05-27 17:56:20 +0200Albina_Pavlovna(~Albina_Pa@2603-7000-76f0-76e0-4593-7814-42d6-7053.res6.spectrum.com) (Quit: ZZZzzz…)
2023-05-27 17:57:30 +0200zenstoic(uid461840@id-461840.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-05-27 17:59:14 +0200nate2(~nate@98.45.169.16)
2023-05-27 17:59:46 +0200alternateved(~user@77-253-195-69.dynamic.inetia.pl)
2023-05-27 18:02:52 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-05-27 18:03:48 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-27 18:05:07 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-27 18:05:41 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-05-27 18:13:17 +0200acidjnk(~acidjnk@p200300d6e7072f9698fc7344e9503bb5.dip0.t-ipconnect.de)
2023-05-27 18:16:41 +0200 <jade[m]> in regards to typeclass instances I wonder whether there could be a better way to handle the cases where there are multiple "correct" instances.
2023-05-27 18:16:41 +0200 <jade[m]> mainly the `Sum` or `Product` monoid come to mind.
2023-05-27 18:16:41 +0200 <jade[m]> We need a wrapper for each because we cannot just say
2023-05-27 18:16:41 +0200 <jade[m]> ...(truncated)
2023-05-27 18:17:29 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 18:21:35 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 18:22:57 +0200 <monochrom> See my https://mail.haskell.org/pipermail/haskell-cafe/2017-May/127147.html >:)
2023-05-27 18:24:49 +0200 <jade[m]> that's amazing and nearly what I'm looking for :D
2023-05-27 18:26:02 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
2023-05-27 18:27:21 +0200alternat`(~user@77-253-195-69.dynamic.inetia.pl)
2023-05-27 18:34:19 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-05-27 18:34:50 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd) (Remote host closed the connection)
2023-05-27 18:38:03 +0200alternat`(~user@77-253-195-69.dynamic.inetia.pl) (Remote host closed the connection)
2023-05-27 18:38:03 +0200alternateved(~user@77-253-195-69.dynamic.inetia.pl) (Remote host closed the connection)
2023-05-27 18:39:18 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Remote host closed the connection)
2023-05-27 18:40:20 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-05-27 18:40:57 +0200alternateved(~user@77-253-195-69.dynamic.inetia.pl)
2023-05-27 18:42:45 +0200InvalidArgument(~fabrizio@2803:9800:98c4:76ad:983c:b21b:f36f:a8c9)
2023-05-27 18:47:02 +0200alternateved(~user@77-253-195-69.dynamic.inetia.pl) (Remote host closed the connection)
2023-05-27 18:50:28 +0200econo(uid147250@user/econo)
2023-05-27 18:51:29 +0200Pickchea(~private@user/pickchea)
2023-05-27 18:52:45 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2023-05-27 18:55:59 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds)
2023-05-27 18:57:22 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-05-27 18:57:45 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-05-27 19:00:30 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 19:06:55 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-27 19:07:04 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:ddaa:9bff:1a38:a342) (Remote host closed the connection)
2023-05-27 19:07:23 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:ddaa:9bff:1a38:a342)
2023-05-27 19:07:57 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 256 seconds)
2023-05-27 19:08:06 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-05-27 19:08:32 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7)
2023-05-27 19:08:36 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-05-27 19:10:45 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 240 seconds)
2023-05-27 19:11:53 +0200coot_(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-27 19:14:35 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 264 seconds)
2023-05-27 19:14:36 +0200coot_coot
2023-05-27 19:16:18 +0200robobub(uid248673@2a03:5180:f:5::3:cb61)
2023-05-27 19:20:44 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-27 19:20:44 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-27 19:20:44 +0200wroathe(~wroathe@user/wroathe)
2023-05-27 19:20:58 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:e958:834b:4d15:c9fd)
2023-05-27 19:23:54 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de)
2023-05-27 19:27:35 +0200InvalidArgument(~fabrizio@2803:9800:98c4:76ad:983c:b21b:f36f:a8c9) (Leaving)
2023-05-27 19:33:27 +0200hippoid(~hippoid@user/hippoid)
2023-05-27 19:35:21 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-05-27 19:36:32 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7) (Ping timeout: 248 seconds)
2023-05-27 19:39:53 +0200kuribas(~user@ptr-17d51emeqlp3mkf19tm.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-05-27 19:42:40 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-27 19:52:31 +0200taupiqueur(~taupiqueu@2a02-842a-8180-4601-1912-96d1-9f83-aa24.rev.sfr.net)
2023-05-27 19:56:04 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-1912-96d1-9f83-aa24.rev.sfr.net)
2023-05-27 19:59:57 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-05-27 20:00:47 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-05-27 20:01:01 +0200vandita(~vandit@92-249-141-141.pool.digikabel.hu) (Ping timeout: 240 seconds)
2023-05-27 20:03:00 +0200vandita(~vandit@178-164-188-2.pool.digikabel.hu)
2023-05-27 20:03:19 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-05-27 20:03:19 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-05-27 20:03:19 +0200wroathe(~wroathe@user/wroathe)
2023-05-27 20:08:36 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-05-27 20:08:41 +0200machinedgod(~machinedg@31.217.42.201)
2023-05-27 20:09:56 +0200hippoid(~hippoid@user/hippoid) (Quit: WeeChat 3.8)
2023-05-27 20:12:59 +0200__monty__(~toonn@user/toonn)
2023-05-27 20:15:07 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-05-27 20:28:32 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2023-05-27 20:31:45 +0200zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2023-05-27 20:31:48 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-05-27 20:34:35 +0200michalz(~michalz@185.246.204.90)
2023-05-27 20:35:51 +0200caryhartline(~caryhartl@168.182.58.169)
2023-05-27 20:39:35 +0200 <hololeap> I'm working on some code that uses `fmap` instead of <$> and I'm wondering if the latter didn't exist at some point or if these people just like to write odd code
2023-05-27 20:39:47 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 20:39:56 +0200 <hololeap> literally `fmap` as an infix
2023-05-27 20:40:16 +0200 <hololeap> they also use a lot of snake_case >:(
2023-05-27 20:41:34 +0200 <geekosaur> <$> is fairly recent, yes
2023-05-27 20:41:46 +0200 <geekosaur> came in with Applicative
2023-05-27 20:42:05 +0200 <hololeap> ok, that makes more sense, then
2023-05-27 20:42:19 +0200 <mauke> snake_case is morally correct
2023-05-27 20:42:31 +0200 <hololeap> ikr
2023-05-27 20:43:34 +0200 <hololeap> hlint doesn't like it
2023-05-27 20:44:17 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 256 seconds)
2023-05-27 20:44:25 +0200 <mauke> what does it know? "hlint" isn't even a word
2023-05-27 20:44:50 +0200 <monochrom> It should have been h_lint, too. >:)
2023-05-27 20:45:23 +0200 <monochrom> We should also revive Oleg case. Example: oleg'case
2023-05-27 20:45:31 +0200 <yushyin> h-lint, kebab-case!
2023-05-27 20:45:57 +0200 <monochrom> yeah I like kebab-case in Scheme.
2023-05-27 20:46:22 +0200 <mauke> docker-compose
2023-05-27 20:46:25 +0200 <hololeap> No instance for (Num lint) arising from a use of '-'
2023-05-27 20:46:41 +0200 <monochrom> except when it's call-with-current-continuation. Then I prefer call/cc.
2023-05-27 20:47:04 +0200 <mauke> call/without/current/continuation
2023-05-27 20:47:10 +0200 <mauke> call-w/o-cc
2023-05-27 20:47:19 +0200 <monochrom> haha
2023-05-27 20:49:31 +0200Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-05-27 20:54:35 +0200machinedgod(~machinedg@31.217.42.201) (Ping timeout: 268 seconds)
2023-05-27 20:56:19 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-05-27 20:57:21 +0200 <hololeap> where is the function to look up the full path of an exe in PATH, sort of like the 'which' command?
2023-05-27 20:57:41 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
2023-05-27 20:57:49 +0200Pickchea(~private@user/pickchea)
2023-05-27 20:58:06 +0200zmt00(~zmt00@user/zmt00)
2023-05-27 21:00:46 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2023-05-27 21:01:39 +0200rburkholder(~blurb@96.45.2.121)
2023-05-27 21:03:50 +0200offtherock(~blurb@96.45.2.121) (Ping timeout: 268 seconds)
2023-05-27 21:03:51 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 21:04:50 +0200Sgeo(~Sgeo@user/sgeo)
2023-05-27 21:08:01 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 21:09:05 +0200offtherock(~blurb@96.45.2.121)
2023-05-27 21:11:31 +0200rburkholder(~blurb@96.45.2.121) (Ping timeout: 240 seconds)
2023-05-27 21:11:42 +0200 <ncf> simplest is probably to shell out and call command -v ?
2023-05-27 21:14:53 +0200 <sm> maybe useful:
2023-05-27 21:14:54 +0200 <sm> likelyExecutablesInPath = do
2023-05-27 21:14:54 +0200 <sm> pathdirs <- splitOneOf "[:;]" `fmap` getEnvSafe "PATH"
2023-05-27 21:14:54 +0200 <sm> pathfiles <- concat `fmap` mapM getDirectoryContentsSafe pathdirs
2023-05-27 21:14:54 +0200 <sm> return $ nubSort pathfiles
2023-05-27 21:16:48 +0200 <hololeap> I thought there was a simple one in base :/
2023-05-27 21:16:58 +0200 <mauke> why split on [
2023-05-27 21:17:27 +0200 <yushyin> hololeap: Shelly and Turtle both have a which function, but that's not base :/
2023-05-27 21:17:46 +0200 <sm> mauke that is.. a very good question
2023-05-27 21:18:11 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
2023-05-27 21:18:13 +0200 <mauke> have you been smoking too much sed?
2023-05-27 21:18:14 +0200 <monochrom> System.Directory.findExecutable :)
2023-05-27 21:18:25 +0200 <monochrom> and the plural version
2023-05-27 21:18:38 +0200 <geekosaur> filepath has stuff to split PATH up properly
2023-05-27 21:18:47 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-05-27 21:18:47 +0200 <geekosaur> (not base, but bootlib)
2023-05-27 21:19:09 +0200 <sm> yes.. thanks! And yes, I bet there is newer stuff in directory package
2023-05-27 21:19:50 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
2023-05-27 21:20:57 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 21:22:25 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-05-27 21:22:27 +0200 <monochrom> (pun intended dad joke) In general, System.Directory should be on your default search path for this kind of things. >:D
2023-05-27 21:23:03 +0200 <ncf> why split on ; also
2023-05-27 21:23:10 +0200 <geekosaur> windowes
2023-05-27 21:23:14 +0200 <mauke> quick and dirty windows compatibility
2023-05-27 21:23:17 +0200 <ncf> oh god
2023-05-27 21:23:27 +0200 <mauke> except it'll break on windows anyway
2023-05-27 21:23:35 +0200 <mauke> because C:\lol\whatever will be split on :
2023-05-27 21:24:15 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2023-05-27 21:24:18 +0200 <sm> I think I wrote this when System.Directory was less featureful
2023-05-27 21:25:08 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 21:26:17 +0200 <sm> ack.. I may have to break down and rewrite/retest. Where is a windows machine when you need one
2023-05-27 21:26:28 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-05-27 21:26:54 +0200 <geekosaur> waiting for you to plug in a credit card for the license
2023-05-27 21:27:53 +0200 <sm> actually I think I do have a working windows 7 vm here at least
2023-05-27 21:27:56 +0200 <mauke> the windows xp license code generator has been cracked
2023-05-27 21:28:04 +0200 <mauke> so that's an option :-)
2023-05-27 21:28:25 +0200 <sm> I think MS provides free vm images of (some version of) the older windows
2023-05-27 21:28:55 +0200 <mauke> also, github actions
2023-05-27 21:29:28 +0200 <sm> indeed, but you really need an interactive one sometimes
2023-05-27 21:31:11 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-05-27 21:35:35 +0200manwithluck(manwithluc@hoeven.dossingday.ml) (Remote host closed the connection)
2023-05-27 21:36:01 +0200monoidal(~monoidal@2001:861:3f42:1b60:b35a:bce5:8722:1910)
2023-05-27 21:36:33 +0200 <sm> oh hmm.. "Your activation period has expired.". Maybe those images are time limited.
2023-05-27 21:37:19 +0200 <sm> oh well, I think no windows user cares about this, maybe I shouldn't either
2023-05-27 21:38:20 +0200manwithluck(manwithluc@hoeven.dossingday.ml)
2023-05-27 21:38:45 +0200 <sm> oh.. but then it lets me in anyway.
2023-05-27 21:39:51 +0200 <sm> nice.. seems I have a working windows 11 VM too.
2023-05-27 21:40:57 +0200 <tomsmeding> in my experience windows complaining about activation is just that -- complaining
2023-05-27 21:41:17 +0200 <tomsmeding> it disables some customisation settings iirc, stuff like desktop background and other personalisation settings
2023-05-27 21:41:19 +0200kluk(~arrowhead@cpe-74-66-76-151.nyc.res.rr.com)
2023-05-27 21:43:01 +0200 <hololeap> monochrom: thank you!
2023-05-27 21:43:08 +0200 <hololeap> not base but close enough
2023-05-27 21:43:48 +0200 <sm> wow.. I can run an intel windows binary in this arm version of windows. I guess it has some apple-rosetta-like translation
2023-05-27 21:45:02 +0200 <sm> though a minute later the vm crashed.
2023-05-27 21:46:11 +0200 <monochrom> Just like what happened when my students tried virtualboxing ubuntu on M1 :D
2023-05-27 21:53:22 +0200 <hololeap> monochrom: I think the reason why I didn't find it when I first looked in there is that it's catagorized under "existence tests"
2023-05-27 21:53:46 +0200 <monochrom> Ah
2023-05-27 21:53:59 +0200 <monochrom> ctrl-f is better :)
2023-05-27 21:54:14 +0200 <hololeap> I did that but I searched for "path" :(
2023-05-27 21:54:18 +0200monoidal(~monoidal@2001:861:3f42:1b60:b35a:bce5:8722:1910) (Quit: Client closed)
2023-05-27 21:54:26 +0200 <monochrom> Ah
2023-05-27 21:54:29 +0200 <hololeap> (I couldn't remember then name of it)
2023-05-27 21:54:30 +0200 <hololeap> haha
2023-05-27 21:54:46 +0200 <monochrom> This is why Searle's Chinese Room argument breaks.
2023-05-27 21:55:04 +0200monoidal(~monoidal@2001:861:3f42:1b60:93b1:31be:ae42:8ec9)
2023-05-27 21:55:06 +0200 <monochrom> There is an smbc for that. :)
2023-05-27 21:55:29 +0200titibandit(~titibandi@user/titibandit)
2023-05-27 21:58:01 +0200 <monochrom> https://www.smbc-comics.com/comic/robot-john-searle
2023-05-27 22:00:38 +0200 <monochrom> Complexity-wise if you can find the answer in time proportional to the question length, as opposed to the database size which is infinite anyway, then you can't be said to be "just dumb searching".
2023-05-27 22:00:44 +0200nate2(~nate@98.45.169.16)
2023-05-27 22:01:24 +0200 <monochrom> Equivalently, just because the database is right in front of you, doesn't mean you know how to search it usefully. :)
2023-05-27 22:05:25 +0200nate2(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-05-27 22:06:19 +0200 <mauke> https://blog.plover.com/prog/loaded-uzi.html
2023-05-27 22:13:47 +0200cheater_(~Username@user/cheater)
2023-05-27 22:14:23 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2023-05-27 22:14:31 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-05-27 22:15:59 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2023-05-27 22:16:03 +0200cheater_cheater
2023-05-27 22:17:10 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2023-05-27 22:19:56 +0200 <Profpatsch> [exa]: Funnily enough I think the Applicative semantics I actually need for the form thingy is neither Valiadtion nor Either, but rather ((,) (These Error OriginalValue)) or something along those lines
2023-05-27 22:19:57 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2023-05-27 22:20:04 +0200 <Profpatsch> A kingdom for Deriving Via … oh wait, it exists
2023-05-27 22:20:26 +0200 <Profpatsch> the future is bright
2023-05-27 22:20:36 +0200 <Profpatsch> the presence is bright :P
2023-05-27 22:21:21 +0200 <[exa]> Profpatsch: yap (,) is Writer... :D
2023-05-27 22:21:41 +0200ub(~Thunderbi@p200300ecdf000282072de7d7af033fca.dip0.t-ipconnect.de)
2023-05-27 22:21:51 +0200 <geekosaur> this is starting to look like Chronicle
2023-05-27 22:21:52 +0200ubert(~Thunderbi@p548c91e0.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2023-05-27 22:21:52 +0200ububert
2023-05-27 22:23:07 +0200 <Profpatsch> [exa]: I don’t think it is? Does the Applicative instance for (x,) have the same space leaks?
2023-05-27 22:23:34 +0200mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-05-27 22:25:39 +0200gentauro(~gentauro@user/gentauro)
2023-05-27 22:27:12 +0200 <Profpatsch> Wait, <*> left-associates and <> right-associates, isn’t that a very bad sign?
2023-05-27 22:29:13 +0200 <int-e> :t (<*>)
2023-05-27 22:29:14 +0200 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
2023-05-27 22:29:39 +0200 <int-e> (it's not associative, you don't have a choice)
2023-05-27 22:30:10 +0200 <Profpatsch> no I mean
2023-05-27 22:30:11 +0200 <Profpatsch> (([], …) <*> ([1], …)) <*> ([2,3], …)
2023-05-27 22:30:14 +0200 <Profpatsch> (([] <> [1]), …) <*> [2,3], …)
2023-05-27 22:30:19 +0200 <Profpatsch> (([] <> [1]) <> [2,3], …)
2023-05-27 22:30:43 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-05-27 22:30:52 +0200 <int-e> yeah that's not ideal
2023-05-27 22:31:35 +0200 <Profpatsch> I guess I can use a Seq
2023-05-27 22:31:41 +0200 <int-e> But you can always fix that by using DList a ~ Endo [] a
2023-05-27 22:32:03 +0200 <int-e> Or Seq, sure
2023-05-27 22:32:11 +0200 <Profpatsch> I guess that’s the origin of the Writer space-leak
2023-05-27 22:32:24 +0200 <int-e> It is, and the fix is the same
2023-05-27 22:32:27 +0200 <Profpatsch> And the fix is Writer.CPS, which is exactly DList
2023-05-27 22:32:31 +0200 <int-e> Seq isn't lazy though
2023-05-27 22:32:31 +0200 <Profpatsch> yep yep
2023-05-27 22:32:39 +0200 <Profpatsch> int-e: is that a problem?
2023-05-27 22:32:46 +0200trev(~trev@user/trev) (Quit: trev)
2023-05-27 22:33:25 +0200 <Profpatsch> The applicative is gonna be forced in any case
2023-05-27 22:33:29 +0200 <int-e> Hmm, in the case of Writer (with DList, or the CPS version), having a lazy result actually works, you can consume it before the whole writing is done.
2023-05-27 22:33:54 +0200 <Profpatsch> but yeah, if you build an infinite Applicative structure and only look at the first n elements of the fst Seq, that might be a problem
2023-05-27 22:34:07 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-05-27 22:34:39 +0200 <int-e> > execWriter $ tell "abc" >> undefined
2023-05-27 22:34:40 +0200 <lambdabot> "abc*Exception: Prelude.undefined
2023-05-27 22:34:43 +0200 <Profpatsch> <> should right-associate, convince me otherwise :)
2023-05-27 22:34:54 +0200 <Profpatsch> I think that might solve a bunch of problems
2023-05-27 22:35:07 +0200 <int-e> infixr 6 <>
2023-05-27 22:35:41 +0200 <Profpatsch> err, I didn’t think this trough; but <*> right-associating makes no sense
2023-05-27 22:36:00 +0200 <Profpatsch> Hrm, I guess no real solution apart from using Dlists and maybe annotating the (,) applicative instance
2023-05-27 22:36:28 +0200 <Profpatsch> In general I feel like base should have better instance docs
2023-05-27 22:36:32 +0200freeside(~mengwong@103.252.202.189)
2023-05-27 22:36:33 +0200 <Profpatsch> with examples and dos and don’ts
2023-05-27 22:36:43 +0200 <monochrom> > take 3 (execWriter $ tell "abc" >> undefined)
2023-05-27 22:36:44 +0200 <lambdabot> "abc"
2023-05-27 22:36:46 +0200 <monochrom> :)
2023-05-27 22:36:52 +0200 <Profpatsch> There’s a bunch of trip mines like that
2023-05-27 22:37:17 +0200 <int-e> monochrom: my example did print the "abc part :)
2023-05-27 22:37:46 +0200 <int-e> (hmm, show of laziness?)
2023-05-27 22:37:50 +0200 <monochrom> Yeah, but there are always doubters and haters who focus on the irrelevant presence of an error message.
2023-05-27 22:38:00 +0200 <int-e> > fix error
2023-05-27 22:38:01 +0200 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
2023-05-27 22:38:16 +0200 <Profpatsch> But, like, I use (Validation (NonEmpty …)) throughout the code already and fixing that is a problem for future me
2023-05-27 22:38:23 +0200 <Profpatsch> (it has the same problem)
2023-05-27 22:40:26 +0200 <Profpatsch> Actually that’s a pretty bad thing, cause you have to rebuild n²/2 NonEmpty lists to get the final result
2023-05-27 22:40:45 +0200freeside(~mengwong@103.252.202.189) (Ping timeout: 240 seconds)
2023-05-27 22:41:10 +0200 <Profpatsch> So if you parse a CSV with 1000 lines and 750 of those have errors, that’s a pretty huge space leak
2023-05-27 22:43:10 +0200 <Profpatsch> (or rather n NonEmpty lists with n²/2 elements
2023-05-27 22:44:24 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2023-05-27 22:45:04 +0200wroathe(~wroathe@50.205.197.50)
2023-05-27 22:45:04 +0200wroathe(~wroathe@50.205.197.50) (Changing host)
2023-05-27 22:45:04 +0200wroathe(~wroathe@user/wroathe)
2023-05-27 22:49:17 +0200biberu(~biberu@user/biberu)
2023-05-27 22:53:25 +0200 <tomsmeding> % import Data.List.NonEmpty
2023-05-27 22:53:25 +0200 <yahb2> <no output>
2023-05-27 22:53:34 +0200 <tomsmeding> % newtype NonEmptyEndo a = NonEmptyEndo ([a] -> NonEmpty a)
2023-05-27 22:53:34 +0200 <yahb2> <no output>
2023-05-27 22:54:17 +0200 <tomsmeding> % instance Semigroup (NonEmptyEndo a) where NonEmptyEndo f <> NonEmptyEndo g = NonEmptyEndo (g . toList . f)
2023-05-27 22:54:17 +0200 <yahb2> <interactive>:183:96: error: ; Ambiguous occurrence ‘toList’ ; It could refer to ; either ‘Data.List.NonEmpty.toList’, ; imported from ‘Data.List.NonEmpty’ ; ...
2023-05-27 22:54:28 +0200 <tomsmeding> % instance Semigroup (NonEmptyEndo a) where NonEmptyEndo f <> NonEmptyEndo g = NonEmptyEndo (g . Data.List.NonEmpty.toList . f)
2023-05-27 22:54:28 +0200 <yahb2> <no output>
2023-05-27 22:54:46 +0200 <tomsmeding> it's not a monoid, clearly
2023-05-27 22:55:08 +0200 <Profpatsch> NonEmpty has not mempty, yeah :)
2023-05-27 22:55:14 +0200 <Profpatsch> cause it’s non empty
2023-05-27 22:55:15 +0200 <tomsmeding> % runNonEmptyEndo :: NonEmptyEndo a -> NonEmpty a ; runNonEmptyEndo (NonEmptyEndo f) = f []
2023-05-27 22:55:15 +0200 <yahb2> <no output>
2023-05-27 22:55:25 +0200 <tomsmeding> Profpatsch: replace your NonEmpty with NonEmptyEndo? :p
2023-05-27 22:55:28 +0200 <Profpatsch> tomsmeding: dlist has it now
2023-05-27 22:55:37 +0200 <Profpatsch> Data.DList.DNonEmpty
2023-05-27 22:55:41 +0200 <Profpatsch> includes patterns and everything
2023-05-27 22:55:52 +0200 <tomsmeding> ah lol
2023-05-27 22:55:58 +0200 <Profpatsch> Although no, no patterns yet
2023-05-27 22:56:08 +0200 <tomsmeding> always good to find out that others had your idea before you did
2023-05-27 22:56:14 +0200 <tomsmeding> shows it was a good idea
2023-05-27 22:56:16 +0200 <Profpatsch> NeSeq has some cool patterns tho
2023-05-27 22:56:29 +0200 <Profpatsch> tomsmeding: an idea whose time has come :P
2023-05-27 22:56:37 +0200 <Profpatsch> https://hackage.haskell.org/package/nonempty-containers-0.3.4.4/docs/Data-Sequence-NonEmpty.html#v…
2023-05-27 22:56:39 +0200 <Profpatsch> these are so cool
2023-05-27 22:57:02 +0200 <Profpatsch> you can match IsEmpty and then IsNonEmpty and it works cause
2023-05-27 22:57:04 +0200 <Profpatsch> {-# COMPLETE IsNonEmpty, IsEmpty #-}
2023-05-27 22:57:21 +0200 <Profpatsch> The moment where patterns clicked in my head
2023-05-27 22:57:29 +0200 <Profpatsch> in my *head* (ba dum ts)
2023-05-27 22:57:37 +0200ub(~Thunderbi@p548c91e0.dip0.t-ipconnect.de)
2023-05-27 22:58:08 +0200ubert(~Thunderbi@p200300ecdf000282072de7d7af033fca.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-05-27 22:58:08 +0200ububert
2023-05-27 22:59:14 +0200 <Profpatsch> obligatory https://www.youtube.com/watch?v=6Ejga4kJUts
2023-05-27 23:01:58 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2023-05-27 23:09:21 +0200hamzam3(~hamzam3@2a01:e0a:1ee:8c60:849e:cc8e:5242:786f) (Quit: Leaving)
2023-05-27 23:16:49 +0200smemerges from epic rabbit hole.. well I believe you mauke about that old PATH splitting code being broken on windows.. but somehow it seems to get the job done anyway
2023-05-27 23:19:31 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-05-27 23:19:32 +0200 <int-e> it works fine if *everything* is on C:?
2023-05-27 23:20:44 +0200 <int-e> Which if you're testing in a VM is more likely than with "serious" Windows installations.
2023-05-27 23:23:56 +0200caryhartline(~caryhartl@168.182.58.169) (Remote host closed the connection)
2023-05-27 23:37:24 +0200gurkenglas(~user@dynamic-046-114-179-235.46.114.pool.telefonica.de) (Ping timeout: 250 seconds)
2023-05-27 23:40:09 +0200 <sm> heheh finally I see what it's doing with my own eyes.. ["C","\\Windows\\system32","C","\\Windows","C","\\Windows\\System32\\Wbem",...]
2023-05-27 23:40:09 +0200 <sm> yes indeed, broken, though I used it in a way that it didn't matter
2023-05-27 23:41:47 +0200 <sm> though, as you say in real life someone might have installed hledger addons across multiple drives and they wouldn't work. That person is probably out there shaking their fist, if they exist.
2023-05-27 23:44:40 +0200 <sm> off topic, but I think I quite like Windows' window management (easy snapping to full/half/quarter screen positions)
2023-05-27 23:45:54 +0200 <ncf> wdym <*> right-associating?
2023-05-27 23:46:01 +0200 <ncf> oh i was scrolled up
2023-05-27 23:46:56 +0200reach(~reach@2607:fea8:4c0:990:9195:d8e:b2d8:baa7)
2023-05-27 23:53:19 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-05-27 23:56:12 +0200elmklod(~Elm@94.25.164.115) (Quit: Leaving)
2023-05-27 23:57:35 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)