Home liberachat/#haskell: Logs Calendar

Logs on 2022-06-19 (liberachat/#haskell)

00:01:03 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 256 seconds)
00:01:16 causal joins (~user@50.35.83.177)
00:02:45 × juri_ quits (~juri@79.140.114.143) (Ping timeout: 256 seconds)
00:04:32 sebastiandb joins (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net)
00:05:07 stefan-_ joins (~cri@42dots.de)
00:06:20 <sebastiandb> I've been trying to add a dependency to my Stack project (Data.Text), but although the guide online (https://docs.haskellstack.org/en/v1.5.0/GUIDE/) says to modify the *.cabal file, that's modified every time I run 'stack build'. How do I properly add a dependency in this case, then? Using stack.yaml?
00:07:45 <dsal> sebastiandb: Do you have a package.yaml?
00:07:59 <sebastiandb> Yes.
00:08:05 <dsal> @where paste
00:08:05 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
00:08:41 <dsal> Things may sometimes get strange if you edit the cabal file *and* use hpack.
00:08:58 <sebastiandb> So, that's the file I have to edit, then? I haven't changed it from the default after running stack new [projectname].
00:09:33 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 256 seconds)
00:09:55 <sebastiandb> I appreciate the prompt answer, BTW
00:09:59 machinedgod joins (~machinedg@66.244.246.252)
00:11:02 <dsal> Yeah, it depends on what your template did and stuff, but there might be dependencies already. You can just add `text` there.
00:11:56 perdent joins (~perdent@124.188.208.163)
00:13:29 <sebastiandb> How do I add it? I've added a bullet point listing "text" there, but it doesn't work. I'll just copy/paste my file like you suggested.
00:14:57 <sebastiandb> https://paste.tomsmeding.com/e0WauBNe
00:15:12 × kannon quits (~NK@c-73-170-170-57.hsd1.ca.comcast.net) (Quit: Lost terminal)
00:15:18 <sebastiandb> The module is called fizz buzz, because it's a basic fizz buzz program so I can learn how Stack works.
00:15:48 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:15:53 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
00:18:41 <dsal> sebastiandb: below the "- base" line, just add a line that says "- text"
00:19:20 <dsal> You added it as a dependency to your exe, but perhaps you need it in your lib? Or tests?
00:19:38 <dsal> If you do it at the top, it should be available everywhere.
00:20:29 <sebastiandb> That makes sense. Thanks for clarifying the distinction. I've added it and it works. Thanks for the help!
00:20:51 <dsal> Woo. It'll all downhill from there.
00:25:12 <sebastiandb> By compiling using stack build, it installed the executable at [project root]/.stack-work/install/x86_64-linux-tinfo6/8b5312344a6ad4cb9963965e9b12e5e7971068b57c3e3847d5dba4265a79f112/9.0.2/bin. Is there a way to also have a temporary copy at the root of the project directory, so I don't have to refer to this to run the executable?
00:26:56 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 252 seconds)
00:27:36 <sebastiandb> dsal: Forgot to mention your name, my bad
00:28:31 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:28:31 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:28:31 wroathe joins (~wroathe@user/wroathe)
00:28:41 <dsal> sebastiandb: stack exec fizzbuzz
00:28:57 <dsal> stack install will put it in ~/.local/bin
00:29:05 <dsal> stack test will run your unit tests
00:29:16 <dsal> `stack test --file-watch` will run the tests on every change. :)
00:29:31 acarrico joins (~acarrico@dhcp-68-142-48-19.greenmountainaccess.net)
00:30:26 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Remote host closed the connection)
00:30:36 <sebastiandb> Thanks! That's useful to know. Better than relying on Makefiles to do that, haha.
00:33:10 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
00:34:21 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:43:59 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
00:46:23 × natechan quits (~nate@98.45.169.16) (Ping timeout: 244 seconds)
00:49:03 natechan joins (~nate@98.45.169.16)
00:54:32 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
00:59:44 Infinite joins (~Infinite@49.39.121.77)
01:07:19 quarkyalice joins (~quarkyali@user/quarkyalice)
01:12:50 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:14:28 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
01:16:34 × Typedfern quits (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Remote host closed the connection)
01:16:36 quarkyalice joins (~quarkyali@user/quarkyalice)
01:16:38 leeb joins (~leeb@KD106155002213.au-net.ne.jp)
01:17:05 Typedfern joins (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net)
01:18:57 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:19:36 Guest48 joins (~Guest48@2601:283:4602:3820:bd97:9401:9c23:cecb)
01:19:53 × jao quits (~jao@211.68.17.95.dynamic.jazztel.es) (Remote host closed the connection)
01:22:02 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds)
01:23:29 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
01:24:09 × Guest48 quits (~Guest48@2601:283:4602:3820:bd97:9401:9c23:cecb) (Client Quit)
01:26:37 × mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 256 seconds)
01:29:20 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
01:30:50 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
01:32:59 quarkyalice joins (~quarkyali@user/quarkyalice)
01:35:21 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 248 seconds)
01:37:44 × quarkyalice quits (~quarkyali@user/quarkyalice) (Client Quit)
01:38:30 × sebastiandb quits (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
01:46:40 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
01:48:12 × Me-me quits (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
01:48:12 Me-me joins (~me-me@user/me-me)
01:53:46 × perdent quits (~perdent@124.188.208.163) (Quit: Client closed)
01:54:08 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
02:00:13 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
02:00:42 Axman6 joins (~Axman6@user/axman6)
02:00:52 Axma98290 joins (~Axman6@user/axman6)
02:02:10 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
02:05:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
02:07:30 × td_ quits (~td@94.134.91.116) (Ping timeout: 240 seconds)
02:08:11 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:09:40 td_ joins (~td@muedsl-82-207-238-050.citykom.de)
02:14:00 × Axman6 quits (~Axman6@user/axman6) (Killed (NickServ (GHOST command used by Axma98290)))
02:14:06 Axma98290 is now known as Axman6
02:18:11 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
02:19:19 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
02:22:08 nate4 joins (~nate@98.45.169.16)
02:24:03 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
02:24:45 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
02:29:31 liz joins (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net)
02:30:28 × even4void quits (even4void@came.here.for-some.fun) (Quit: fBNC - https://bnc4free.com)
02:30:39 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
02:30:39 × xacktm quits (xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
02:31:53 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Quit: leaving)
02:33:12 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
02:35:30 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Client Quit)
02:35:41 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:35:41 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:35:41 finn_elija is now known as FinnElija
02:35:42 kannon joins (~NK@135-180-47-54.fiber.dynamic.sonic.net)
02:37:12 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
02:39:28 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
02:48:04 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
02:50:29 even4void joins (even4void@came.here.for-some.fun)
02:53:58 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
02:55:16 xacktm joins (xacktm@user/xacktm)
02:56:38 sebastiandb joins (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net)
02:56:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:56:57 × kannon quits (~NK@135-180-47-54.fiber.dynamic.sonic.net) (Quit: leaving)
02:58:40 × liz quits (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net) (Quit: leaving)
03:04:13 × sebastiandb quits (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Quit: Leaving)
03:07:42 nate4 joins (~nate@98.45.169.16)
03:10:18 luke-clifton[m] joins (~luke-clif@2001:470:69fc:105::2:3122)
03:14:51 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
03:16:30 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
03:18:50 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
03:18:50 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 240 seconds)
03:21:11 img joins (~img@user/img)
03:26:31 kimjetwav joins (~user@2607:fea8:2340:da00:c6e9:fbcb:640d:f8d)
03:39:01 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) ()
03:39:41 dmj` joins (sid72307@id-72307.hampstead.irccloud.com)
03:44:53 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
03:47:02 nate4 joins (~nate@98.45.169.16)
03:48:50 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
03:54:46 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
04:03:37 × mvk quits (~mvk@2607:fea8:5ce3:8500::4588) (Ping timeout: 248 seconds)
04:08:12 img joins (~img@user/img)
04:08:21 × Volt_ quits (~Volt_@c-68-49-170-216.hsd1.mi.comcast.net) (Quit: )
04:11:37 × jao quits (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 248 seconds)
04:12:15 Sgeo joins (~Sgeo@user/sgeo)
04:20:35 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
04:24:50 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
04:45:31 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds)
04:55:08 raym joins (~raym@user/raym)
04:55:54 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
04:56:16 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
04:57:34 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
05:01:17 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
05:01:40 vglfr joins (~vglfr@88.155.15.21)
05:11:11 benin0 joins (~benin@183.82.205.9)
05:11:41 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
05:20:57 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
05:35:53 × leeb quits (~leeb@KD106155002213.au-net.ne.jp) (Ping timeout: 248 seconds)
05:37:56 leeb joins (~leeb@KD106155000043.au-net.ne.jp)
05:45:43 × cosimone quits (~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81) (Remote host closed the connection)
05:48:41 × vglfr quits (~vglfr@88.155.15.21) (Ping timeout: 248 seconds)
05:53:07 cosimone joins (~user@93-44-186-171.ip98.fastwebnet.it)
05:55:43 <lisbeths> In theory is it possible to take haskell and port it to a different core than the core of ghc
05:55:51 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
05:57:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
05:59:13 <dsal> There used to be more than one haskell implementation, but haskell is pretty much GHC these days.
06:01:24 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:02:10 × benin0 quits (~benin@183.82.205.9) (Ping timeout: 240 seconds)
06:02:32 benin0 joins (~benin@183.82.204.151)
06:02:35 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
06:11:04 × natechan quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
06:13:12 × kitty1 quits (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 248 seconds)
06:15:12 frost joins (~frost@user/frost)
06:16:27 kitty1 joins (~kitty@096-039-147-043.res.spectrum.com)
06:21:01 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Remote host closed the connection)
06:22:44 kitty2 joins (~kitty@096-039-147-043.res.spectrum.com)
06:22:49 × kitty1 quits (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 248 seconds)
06:25:31 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
06:28:10 nate4 joins (~nate@98.45.169.16)
06:32:37 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds)
06:34:40 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:35:23 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
06:44:14 gmg joins (~user@user/gehmehgeh)
06:46:35 coot joins (~coot@213.134.190.95)
06:51:41 soulomoon joins (~soulomoon@103.156.242.114)
06:53:59 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:54:10 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
07:03:13 kuribas joins (~user@ptr-17d51eou2t4ghz8c28s.18120a2.ip6.access.telenet.be)
07:04:47 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds)
07:05:39 × soulomoon quits (~soulomoon@103.156.242.114) (Quit: Client closed)
07:15:55 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
07:21:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
07:25:45 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 248 seconds)
07:26:34 <jchia[m]> Can the dependency version bounds on the hackage page for a package differ from the cabal file in the downloaded package tarball?
07:27:21 <sclv> yes. the raw downloaded tarball doesn’t contain revisions
07:27:43 <jchia[m]> I'm seeing different upper bounds for bytestring in the nanovg package.
07:29:03 <jchia[m]> sclv: cabal files can have dependency version bounds. Are we talking about the same thing?
07:41:41 × benin0 quits (~benin@183.82.204.151) (Quit: Ping timeout (120 seconds))
07:42:01 benin0 joins (~benin@183.82.205.9)
07:43:15 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:45:53 quarkyalice joins (~quarkyali@user/quarkyalice)
07:55:51 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
07:57:00 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
07:58:05 abccgr joins (abccgr@117.194.188.23)
07:59:11 <kuribas> https://twitter.com/jdegoes/status/1471147030680645638
08:00:03 <kuribas> I rather disagree, you get a lot of bang for buck, for a relatively little effort (depending on the problem).
08:01:04 <kuribas> "The pedagogical and boilerplate overhead of HKD is significant. You can't even compare two 'Person f' for equality unless you know a LOT!"
08:01:22 <kuribas> Erm, the hkd approach reduces boilerplate.
08:01:54 <kuribas> And I can write "deriving instance Eq (Person Identity)"
08:02:01 × leeb quits (~leeb@KD106155000043.au-net.ne.jp) (Ping timeout: 248 seconds)
08:02:38 arthurs115 joins (~arthurs11@78.196.67.166)
08:02:56 benin06 joins (~benin@183.82.204.151)
08:03:32 <kuribas> What do you guys think about hkd?
08:04:00 × frost quits (~frost@user/frost) (Quit: Client closed)
08:04:59 × benin0 quits (~benin@183.82.205.9) (Ping timeout: 256 seconds)
08:04:59 benin06 is now known as benin0
08:09:36 abccgr parts (abccgr@117.194.188.23) ()
08:12:00 Guest64 joins (~Guest64@2401:4900:1cc8:c493:1996:37e1:9729:88af)
08:16:51 <jackdk> I think to really get value out of hkd you want a team that's comfortable with rank2 version of traversable
08:17:15 <jackdk> Similarly, to not have to write a zillion deriving instances, you have to be able to come up with something like `deriving instance (forall a . Eq a => Eq (f a)) => Eq (Person f)`
08:19:30 vglfr joins (~vglfr@coupling.penchant.volia.net)
08:20:28 <jackdk> So I think there's a valley before you get all the payoff, and I think if I was leading an industrial team I'd probably teach higher-payoff things first
08:22:06 <kuribas> jackdk: this? https://hackage.haskell.org/package/hkd-0.1/docs/Data-HKD.html#v:gftraverse
08:22:21 <kuribas> jackdk: what are higher-payoff things?
08:23:30 <jackdk> kuribas: https://hackage.haskell.org/package/hkd-0.1/docs/Data-HKD.html#v:ftraverse is the interface, you've linked the generic-deriving helper
08:23:30 <kuribas> also, "deriving instance Eq (Person Identity)", is the same for the alternative (separate data definitions).
08:24:20 <kuribas> rank2 traverse is not that scary, is it?
08:24:28 <jackdk> For example, if I could choose between a team fluent in servant or a team fluent in hkd, I'd probably pick servant
08:24:50 <jackdk> If I could choose between fluency in lens or fluency in hkd, I'd probably pick lens
08:25:26 <kuribas> But the useful subset of lens is pretty small.
08:25:40 <kuribas> most of the "scary" lens stuff is extra fluff.
08:26:35 <kuribas> basic lenses or optics (view, over, toListOff, traverseOf, ...) are not that hard, or are they?
08:26:43 <jackdk> "rank2 traverse is not that scary" - not _that_ scary in itself , but you also have to be comfortable with functor composition to understand how it works
08:26:46 <kuribas> I mean, ideally you'd know both.
08:26:58 <kuribas> hmm, good point.
08:27:48 <jackdk> kuribas: ideally you'd know everything, yes, but the question is: how much do you need to teach someone before he or she becomes productive?
08:27:50 <kuribas> I think these things are easier explained using examples, than by analysing the type.
08:28:22 <kuribas> jackdk: well, I have been "simplifying" my code by removing transformers, and using IO, IORefs and exceptions.
08:28:45 <jackdk> I personally would not go that direction but ok
08:28:58 <kuribas> But I found the hkd records to be simplifying the code a lot.
08:29:25 <kuribas> jackdk: maybe clojure *is* a better language for average developers after all...
08:30:08 <kuribas> as, instead of using hkd records, you just use hashmaps everywhere!
08:30:46 <jackdk> I think that's swinging too far, the type-checker does _so_ much
08:31:25 <kuribas> true, but how can you encode "record variants", in an easy, but type-safe way?
08:32:23 <jackdk> newtypes and a few type variables in a template record
08:32:38 <kuribas> what's a "template record"?
08:32:56 <kuribas> you mean TH to generate records?
08:34:00 mc47 joins (~mc47@xmonad/TheMC47)
08:34:19 <jackdk> data `Person timestamp = { name :: Text, updatedAt :: timestamp, createdAt :: timestamp }; newtype NewPerson = NewPerson (Person ()); newtype StoredPerson = StoredPerson (Person UTCTime)`. Or perhaps `type`
08:35:10 × Guest64 quits (~Guest64@2401:4900:1cc8:c493:1996:37e1:9729:88af) (Quit: Guest64)
08:36:39 <kuribas> that's less flexible than a hkd type variable.
08:37:51 × coot quits (~coot@213.134.190.95) (Quit: coot)
08:38:16 Tuplanolla joins (~Tuplanoll@91-159-68-181.elisa-laajakaista.fi)
08:42:10 <jackdk> yes
08:42:23 <jackdk> I was never arguing otherwise
08:43:41 <kuribas> then I could argue that the clojure approach is superior, as it gives you more flexibility.
08:44:28 <kuribas> For example, I could make a hashmap that describes how to parse each field.
08:44:36 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
08:52:01 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
08:54:04 <kuribas> jackdk: do you have experience with teaching this?
08:54:10 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
08:56:25 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
08:57:58 <jackdk> You could, but then I would say that giving up type safety entirely is the greater loss
08:58:23 <kuribas> yeah, opinions differ on that part.
08:58:47 <kuribas> But personally I prefer type safety over conciseness.
08:58:57 <jackdk> I've taught FP for a few years now.
08:59:27 <jackdk> All else being equal, I'd like more type safety, but as an extreme example I don't find singletons often justify their weight in Haskell
08:59:44 <kuribas> ah, I agree there.
09:00:18 × flo[m] quits (~flosansps@2001:470:69fc:105::1:c22d) (Quit: You have been kicked for being idle)
09:00:50 <kuribas> Though I am not sure that's because the problem is inherently hard, or the library is overengineered.
09:01:04 flo[m] joins (~flosansps@2001:470:69fc:105::1:c22d)
09:01:31 <kuribas> As a workaround, you can usually make a GADT to link type level and value level.
09:01:35 <tomsmeding> I suspect the general problem that singletons is trying to solve is inherently hard
09:01:39 × arthurs115 quits (~arthurs11@78.196.67.166) (Ping timeout: 256 seconds)
09:01:44 <tomsmeding> making your own singletons for particular types is really not so hard
09:01:50 <tomsmeding> yeah
09:03:21 × Tuplanolla quits (~Tuplanoll@91-159-68-181.elisa-laajakaista.fi) (Ping timeout: 248 seconds)
09:04:04 arthurs115 joins (~arthurs11@78.196.67.166)
09:04:44 <kuribas> wouldn't a simple macro to "unlift" data be useful?
09:05:51 <kuribas> MyData Foo = MkFoo | MkBar; instance UnLift 'MkFoo Foo; instance UnLift 'MkBar Foo
09:07:33 coco joins (~coco@212-51-146-199.fiber7.init7.net)
09:08:41 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds)
09:08:55 <coco> Does the cabal executable provide a command or flag to list the specification version that it supports? I can't find any
09:09:22 flo[m] parts (~flosansps@2001:470:69fc:105::1:c22d) ()
09:09:23 <jchia[m]> I'm getting an error from allocaBytesAligned. How can I track down the caller that is calling it with invalid alignment? "allocaBytesAligned: invalid argument (alignment (=24) must be a power of two!)"
09:09:31 <jchia[m]> IDK which library is doing this
09:13:41 coot joins (~coot@213.134.190.95)
09:13:42 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
09:14:11 <turlando> I'm having an hard time trying to typecheck the following expression. I have to benchmark a function encrypt :: MonadRandom m => Curve -> PublicPoint -> Integer -> m (Maybe (Point, Point)) and I'm using Gauge as bench library. I'm doing something like bench "encrypt" $ whnf (encrypt curve public) clearText, but GHC says «Ambiguous type variable ‘m0’ arising from a use of ‘encrypt’ prevents the constraint ‘(MonadRandom m0)’ from being solved.
09:14:11 <turlando> Probable fix: use a type annotation to specify what ‘m0’ should be.» The only issue is that I'm not sure what exactly should I annotate and how
09:19:02 Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
09:19:32 <maerwald[m]> encrypt @IO
09:23:34 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
09:25:27 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds)
09:27:42 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 244 seconds)
09:27:59 perdent joins (~perdent@124.188.208.163)
09:31:06 zeenk joins (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
09:32:22 × arthurs115 quits (~arthurs11@78.196.67.166) (Quit: arthurs115)
09:32:30 × coot quits (~coot@213.134.190.95) (Quit: coot)
09:32:36 arthurs115 joins (~arthurs11@78.196.67.166)
09:33:57 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:43:59 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
09:46:19 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Remote host closed the connection)
09:47:39 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:49:17 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
09:50:41 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Ping timeout: 246 seconds)
09:51:31 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
09:52:15 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
09:55:10 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 240 seconds)
09:57:13 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
10:00:53 Flonk joins (~Flonk@134.255.252.174)
10:01:07 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
10:03:06 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
10:04:59 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:06:58 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
10:07:24 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
10:08:20 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
10:10:36 Ether17 joins (~Ether17@2401:f40:100c:b164:1ac0:4dff:fe69:b9d5)
10:14:54 juri__ is now known as juri_
10:17:04 × noteness quits (~noteness@user/noteness) (Ping timeout: 240 seconds)
10:17:33 noteness joins (~noteness@user/noteness)
10:18:01 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 248 seconds)
10:18:03 × Ether17 quits (~Ether17@2401:f40:100c:b164:1ac0:4dff:fe69:b9d5) (Quit: Client closed)
10:18:34 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
10:18:52 chexum joins (~quassel@gateway/tor-sasl/chexum)
10:24:00 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
10:25:04 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Remote host closed the connection)
10:25:22 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:30:19 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
10:35:17 × Flonk quits (~Flonk@134.255.252.174) (Read error: Connection reset by peer)
10:35:51 Flonk joins (~Flonk@134.255.252.174)
10:38:01 × kuribas quits (~user@ptr-17d51eou2t4ghz8c28s.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
10:40:49 × coco quits (~coco@212-51-146-199.fiber7.init7.net) (Ping timeout: 256 seconds)
10:53:26 odnes joins (~odnes@5-203-174-51.pat.nym.cosmote.net)
10:54:09 coco joins (~coco@212-51-146-199.fiber7.init7.net)
10:58:59 __monty__ joins (~toonn@user/toonn)
11:02:05 × perdent quits (~perdent@124.188.208.163) (Quit: Client closed)
11:02:50 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
11:08:01 × raym quits (~raym@user/raym) (Ping timeout: 256 seconds)
11:08:06 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
11:14:57 nate4 joins (~nate@98.45.169.16)
11:17:51 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
11:19:21 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
11:20:02 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
11:22:21 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
11:24:14 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
11:24:24 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
11:25:35 × jao quits (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 256 seconds)
11:30:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 255 seconds)
11:34:08 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
11:35:05 Topsi joins (~Topsi@dyndsl-095-033-092-199.ewe-ip-backbone.de)
11:49:27 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
11:53:12 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:53:48 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:56:48 dimsuz joins (~dimsuz@185.17.131.99)
11:59:04 <Infinite> What does simply {} mean?
11:59:04 <Infinite> For example in this snippet:
11:59:05 <Infinite> instance Diagnostic PsMessage where
11:59:05 <Infinite>   diagnosticReason = \case
11:59:06 <Infinite>      PSErrParse{} -> ErrorWithoutFlag
12:00:06 <hpc> it's pattern matching on a record and saying it doesn't care about the fields
12:00:11 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds)
12:00:22 <hpc> it's like saying \case PSErrParse _ _ _ _ _ _ ... -> ErrorWithoutFlag
12:00:32 <hpc> however many fields that constructor has
12:01:42 × dimsuz quits (~dimsuz@185.17.131.99) (Quit: Client closed)
12:02:07 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
12:02:26 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
12:05:17 × myme1 quits (~myme@2a01:799:d5a:cd00:f2f:d1a:66d5:4462) (Ping timeout: 244 seconds)
12:06:07 myme1 joins (~myme@2a01:799:d5a:cd00:3de4:f2de:722d:a4ae)
12:14:58 Midjak joins (~Midjak@82.66.147.146)
12:15:06 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 244 seconds)
12:15:32 nate4 joins (~nate@98.45.169.16)
12:16:00 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
12:20:08 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
12:30:58 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
12:31:49 <Axman6> Infinite: see https://stackoverflow.com/questions/38052553/haskell-record-pattern-matching
12:32:30 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
12:33:46 × henninb quits (~henninb@97-116-138-116.mpls.qwest.net) (Ping timeout: 272 seconds)
12:35:27 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:36:51 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:42:46 × benin0 quits (~benin@183.82.204.151) (Quit: The Lounge - https://thelounge.chat)
12:42:58 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
12:48:04 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:49:18 odnes_ joins (~odnes@5-203-186-208.pat.nym.cosmote.net)
12:50:33 × odnes quits (~odnes@5-203-174-51.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
12:54:05 tristanC_ is now known as tristanC
12:55:32 × Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection)
12:55:46 Axman6 joins (~Axman6@user/axman6)
13:04:24 Everything joins (~Everythin@37.115.210.35)
13:04:40 uberrice joins (~uberrice@77-58-67-184.dclient.hispeed.ch)
13:06:35 <uberrice> Hi there, quick question: I have fun01 :: a->b->a, and now I want to make fun02 :: a -> [b] -> a that takes an array of b and applies fun01 to a one after another. I assume I have to use foldl, but I'm getting a bit confused with syntax
13:07:03 <tomsmeding> :t foldl'
13:07:05 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
13:07:29 <tomsmeding> (when you think you want foldl, you almost always want foldl'; if you really need foldl you would know)
13:07:36 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
13:08:04 <tomsmeding> :t foldl' :: (a -> b -> a) -> a -> [b] -> a
13:08:05 <lambdabot> (a -> b -> a) -> a -> [b] -> a
13:08:51 <tomsmeding> uberrice: I switched 'a' and 'b', because they're just names, and I instantiated 't a' to '[a]'; [] is an instance of Foldable
13:09:29 <tomsmeding> does that help?
13:11:38 <uberrice> Theoretically, yes. I'm still in the process of learning functional programming so it's somewhat confusing. From looking at the type notation, foldl' needs an (a->b->a) that would be fun01 in my case (?), then a then b to yield a. Can i write this as: fun02 a b = foldl' fun01 a b? ghci somehow says foldl' isn't found, would that be foldl1?
13:12:09 <geekosaur> @index foldl'
13:12:09 <lambdabot> Data.Foldable, Data.List, GHC.OldList, Data.ByteString.Lazy.Char8, Data.ByteString.Lazy, Data.ByteString.Char8, Data.ByteString, Data.IntMap.Strict, Data.IntMap.Lazy, Data.IntMap, Data.IntSet, Data.
13:12:09 <lambdabot> Map.Lazy, Data.Map.Strict, Data.Map, Data.Set
13:12:38 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds)
13:12:45 <tomsmeding> uberrice: import Data.List
13:12:59 <tomsmeding> and yes, that's precisely how you can write it
13:13:10 <tomsmeding> you can also abbreviate that as `fun02 = foldl' fun01`
13:13:12 <tomsmeding> :)
13:13:34 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
13:15:16 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:16:48 <uberrice> hmm, yeah, then I understand the concept I guess - my actual implemented solution doesn't work though. Weird
13:17:24 × arthurs115 quits (~arthurs11@78.196.67.166) (Quit: arthurs115)
13:17:37 arthurs115 joins (~arthurs11@78.196.67.166)
13:18:22 <uberrice> Doesn't work as in seemingly doesn't apply the arguments b to a. I'm sure that's PEBCAK though
13:19:51 <geekosaur> @where paste
13:19:52 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
13:21:14 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
13:22:58 raym joins (~raym@user/raym)
13:23:29 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
13:26:12 <uberrice> yup, PEBCAK, fun02 works correctly, fun01 doesn't. Thanks for the help!
13:26:48 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
13:28:10 × finsternis quits (~X@23.226.237.192) (Ping timeout: 240 seconds)
13:28:51 finsternis joins (~X@23.226.237.192)
13:30:22 acetakwas joins (~acetakwas@f240139.upc-f.chello.nl)
13:31:05 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Ping timeout: 255 seconds)
13:31:28 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
13:40:14 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
13:41:48 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:42:56 × xff0x quits (~xff0x@2405:6580:b080:900:1201:81ba:ce69:9f85) (Ping timeout: 244 seconds)
13:47:18 xff0x joins (~xff0x@2405:6580:b080:900:5dff:6ec3:2660:4e43)
13:55:23 <maerwald[m]> Is there an alternative for tasty with less dependencies?
13:57:47 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
14:00:56 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds)
14:00:59 <maerwald[m]> Or maybe just use QuickCheck/HUnit directly. But then I still need an alternative for tasty-bench
14:07:20 <tomsmeding> use criterion directly?
14:07:23 <maerwald[m]> Or... put benchmarks into a separste package.
14:07:48 <maerwald[m]> tomsmeding: tasty-bench doesn't use criterion
14:08:05 <tomsmeding> ah!
14:08:14 <maerwald[m]> It's already supposed to be more lightweight
14:08:32 <maerwald[m]> But tasty pulls in shenanigans like optparse-applicative
14:08:33 <tomsmeding> The benchmarks are probably already in a different component, which shields the dependencies of you main library from those of the test suite already
14:09:14 <maerwald[m]> On windows this caused `cabal build` to fail, even of benchmarks are not selected for build
14:09:30 <tomsmeding> if has(windows): buildable = false
14:09:34 <tomsmeding> I forget the syntax
14:09:41 <maerwald[m]> tomsmeding: that's what I did
14:09:44 <tomsmeding> :p
14:09:49 <tomsmeding> but yeah not satisfying
14:09:50 <maerwald[m]> But it's ugly
14:10:25 <tomsmeding> same effect but somewhat less ugly cabal file, perhaps: an automatic cabal flag that disables the benchmark suite
14:10:37 <tomsmeding> if you don't want to refactor your test code
14:11:03 dsrt^ joins (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net)
14:11:05 <maerwald[m]> tomsmeding: except this is a core package and I'm worried about unforeseen side effects lol
14:11:13 <tomsmeding> ah :p
14:11:59 pleo joins (~pleo@user/pleo)
14:12:05 <maerwald[m]> There should be s way to easily inline library code for such use cases
14:12:45 <maerwald[m]> Like, vendor the crsp, but only the codepaths you actually use
14:13:12 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
14:18:49 machinedgod joins (~machinedg@66.244.246.252)
14:20:35 <hololeap> is there a quick reference for CPP macros I can use with GHC, for instance, checking the minimum version of a dependency
14:22:23 <geekosaur[m]> https://downloads.haskell.org/ghc/9.2.1/docs/html/users_guide/phases.html?highlight=__glasgow_haskell__#options-affecting-the-c-pre-processor
14:23:03 <geekosaur[m]> but that's only the ghc ones, cabal defines some more
14:23:11 <maerwald[m]> https://guide.aelve.com/haskell/cpp-vww0qd72
14:23:25 <maerwald[m]> MIN_VERSION_bytestring(0,10,4)
14:23:34 <hololeap> ok, thanks
14:24:33 <geekosaur[m]> https://cabal.readthedocs.io/en/3.6/cabal-package.html#conditional-compilation
14:26:46 × cawfee quits (~root@2406:3003:2077:2758::babe) (Quit: WeeChat 3.4.1)
14:26:54 cawfee joins (~root@2406:3003:2077:2758::babe)
14:32:32 × dsrt^ quits (~dsrt@50-207-196-30-static.hfc.comcastbusiness.net) (Remote host closed the connection)
14:40:29 odnes__ joins (~odnes@5-203-186-208.pat.nym.cosmote.net)
14:43:05 × odnes_ quits (~odnes@5-203-186-208.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
14:44:12 haskell_apprenti joins (~haskell_a@2603-7000-9900-04ba-b9ff-6cab-6298-12c0.res6.spectrum.com)
14:46:20 <haskell_apprenti> basic question: If I want to extract a type from parent type (not sure if that's correct terminology) ie
14:46:20 <haskell_apprenti> data DatabaseItem = DbString String, and I have x = DatabaseItem "example", and I want to write a function with signature f :: DatabaseItem -> String, how do I do that?
14:46:23 nate4 joins (~nate@98.45.169.16)
14:48:18 gmg joins (~user@user/gehmehgeh)
14:49:22 <geekosaur> f (DatabaseItem s) = s
14:49:29 × raym quits (~raym@user/raym) (Ping timeout: 248 seconds)
14:49:53 <haskell_apprenti> ah ok and that takes advantage of pattern matching
14:49:57 <haskell_apprenti> cool thanks
14:50:24 <haskell_apprenti> ah follow up
14:50:37 <haskell_apprenti> what if this is the datatype
14:50:38 <haskell_apprenti> data DatabaseItem = DbString String
14:50:38 <haskell_apprenti>                   | DbNumber Integer
14:50:59 <haskell_apprenti> and I want to write a function to extract String in one instance, Integer in another. Do I need to write a separate function for each?
14:51:17 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
14:51:38 <haskell_apprenti> what would the type signature of that function be? because we're not sure what the inner type to be extracted will be
14:51:38 <geekosaur[m]> ah, sorry, what I sent you before was wrong because I used the type name instead of the data constructor: f (DbString s) = s
14:51:56 <geekosaur[m]> and if you want the second one, you can't write it because your function has to have a single type
14:52:53 <geekosaur[m]> it can't be Integer in one case and String in another. it could be Either String Integer though
14:53:01 <geekosaur[m]> that's not really recommended
14:53:48 <geekosaur[m]> on the other hand, writing separate functions, both would be partial (would have to error out if the constructor of the value was wrong)
14:54:37 <geekosaur[m]> f (DbString s) = Left s; f (DbNumber n) = Right n
14:54:57 <geekosaur[m]> but this is no different from the original, really, so we wouldn't bother
14:56:03 <haskell_apprenti> hm not sure I follow - so recommended to write separate functions? I'm a little confused by your usage of Left and Right
14:56:23 <geekosaur[m]> @src Either
14:56:23 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it.
14:56:29 <geekosaur[m]> bah
14:56:45 <geekosaur[m]> data Either a b = Left a | Right b
14:56:55 <geekosaur[m]> so the type of f in that case is Either String Integer
14:57:55 <haskell_apprenti> ah I see. but you mentioned that's not really recommended
14:58:15 <geekosaur[m]> writing separate functions would otherwise be necessary, but you need to decide what to do if handed the wrong kind of DatabaseItem
14:58:40 <haskell_apprenti> aha
14:58:47 <geekosaur[m]> not recommended because it's no different from just using the DatabaseItem, which is already effectively Either String Integer
14:59:03 <geekosaur[m]> so you gain nothing from that function
14:59:41 <haskell_apprenti> right so would also be DatabaseItem return type
15:00:54 <haskell_apprenti> thanks for the information
15:01:54 <geekosaur[m]> "effectively". DatabaseItem is more specific, but it behaves in all ways like Either String Integer
15:02:09 × odnes__ quits (~odnes@5-203-186-208.pat.nym.cosmote.net) (Ping timeout: 276 seconds)
15:04:59 odnes joins (~odnes@5-203-186-208.pat.nym.cosmote.net)
15:05:17 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:06:02 × haskell_apprenti quits (~haskell_a@2603-7000-9900-04ba-b9ff-6cab-6298-12c0.res6.spectrum.com) (Quit: Client closed)
15:16:08 × Infinite quits (~Infinite@49.39.121.77) (Quit: Client closed)
15:17:42 Infinite joins (~Infinite@49.39.121.77)
15:17:51 arjun joins (~arjun@user/arjun)
15:18:07 coot joins (~coot@213.134.190.95)
15:21:10 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 240 seconds)
15:25:33 stefan-_ joins (~cri@42dots.de)
15:26:25 × arthurs115 quits (~arthurs11@78.196.67.166) (Ping timeout: 256 seconds)
15:28:25 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:37:34 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
15:42:36 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:46:40 × kimjetwav quits (~user@2607:fea8:2340:da00:c6e9:fbcb:640d:f8d) (Remote host closed the connection)
15:46:45 × zeenk quits (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
15:47:34 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds)
15:48:04 × califax quits (~califax@user/califx) (Ping timeout: 240 seconds)
15:48:29 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
15:48:34 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
15:48:51 califax joins (~califax@user/califx)
15:49:25 raym joins (~raym@user/raym)
15:49:34 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
15:50:22 chexum joins (~quassel@gateway/tor-sasl/chexum)
15:53:13 stiell joins (~stiell@gateway/tor-sasl/stiell)
15:55:18 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
15:57:48 × Infinite quits (~Infinite@49.39.121.77) (Ping timeout: 252 seconds)
16:01:10 × pleo quits (~pleo@user/pleo) (Ping timeout: 240 seconds)
16:01:12 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
16:01:26 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:05:01 coltenwebb[m] joins (~coltenweb@2001:470:69fc:105::2:17c7)
16:06:33 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
16:06:33 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
16:06:33 wroathe joins (~wroathe@user/wroathe)
16:07:26 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.5)
16:12:54 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
16:14:06 azimut joins (~azimut@gateway/tor-sasl/azimut)
16:16:49 <hololeap> any way to write `(m a -> n b) -> ParsecT s u m a -> ParsecT s u n b`
16:17:47 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 246 seconds)
16:19:17 <geekosaur> iirc that's only possible for a small subset of monads
16:20:17 <[exa]> you'd alternatively need something like `polyjoin :: m (n a) -> n a`
16:20:23 <[exa]> not sure if that's got a name
16:22:45 <hololeap> class Foo t where foo :: (m a -> n b) -> t m a -> t n b
16:23:04 <hololeap> not sure what that's called either. isn't there some concept of a "functor over monads" or something
16:24:51 × coot quits (~coot@213.134.190.95) (Quit: coot)
16:26:24 sebastiandb joins (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net)
16:27:21 <hololeap> foonctor
16:28:10 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
16:30:02 <c_wraith> hololeap: it'd be hoist from mmorph, if Parsec had an instance for MFunctor
16:30:13 <c_wraith> well. hoist is a bit more specific than that
16:32:32 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Remote host closed the connection)
16:33:29 <uberrice> Uh, simple question, but gooogle doesn't help. Can anyone link me to a description what Dyadic is in haskell?
16:36:34 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
16:37:19 <hololeap> I'll probably just switch from parsec to megaparsec, cuz, yeah, having MonadParsec would be really nice
16:37:28 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
16:37:28 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
16:37:28 wroathe joins (~wroathe@user/wroathe)
16:38:34 <c_wraith> uberrice: it doesn't have any special haskell meaning
16:39:28 geekosaur wonders if someone was confused by monadic/dyadic as used in apl
16:39:58 <uberrice> it just randomly comes up in some (lecture) code like a type, but it doesn't seem to have any meaning, which confuses me
16:40:40 <geekosaur> can you show some of that context?
16:41:07 <geekosaur> (without context I'd go with the APL meaning: an operator that takes 2 parameters)
16:41:14 × coco quits (~coco@212-51-146-199.fiber7.init7.net) (Ping timeout: 246 seconds)
16:41:47 <EvanR> i.e. a rank 2 tensor?
16:42:01 alp__ joins (~alp@user/alp)
16:42:19 <uberrice> yes, that's probably what it is. The context it always crops up: make your own 'expression handler' in haskell; with data Expr = Const Value | Var String | Dyadic Opr Expr Expr ;
16:42:54 <c_wraith> ah. that *is* the definition
16:43:08 <c_wraith> and it's definitely coming from someone using apl-like meanings
16:43:19 kimjetwav joins (~user@2607:fea8:2340:da00:a3ad:b89c:e37:6b8f)
16:43:28 <c_wraith> in apl, "dyadic" means an operation that takes two arguments
16:43:34 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
16:43:38 sonny joins (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca)
16:43:48 <EvanR> arity 2
16:43:50 <uberrice> https://paste.tomsmeding.com/x4rw4VgT (which then the task is to evaluate)
16:44:07 <uberrice> (expressions in)
16:44:44 <geekosaur> right, that's basically the APL meaning, an operator with 2 arguments (left and right)
16:44:48 <c_wraith> It'd be more common in haskell to name that constructor something like Binary or BinOp
16:44:52 <uberrice> so is there any programmatic meaning to putting Dyadic there - if you just erased the Dyadic there, am I correct in my assumption the program wouldn't care?
16:45:01 <c_wraith> well, you need a constructor name
16:45:16 <uberrice> aaah ok. I just got it. Man.
16:45:29 <uberrice> Dyadic, with parameters of Opr, Expr and Expr
16:45:41 <uberrice> as like Var, with Parameter String
16:45:45 <uberrice> man that took way too long.
16:45:47 <__monty__> Dyadic is just math-speak, not APL-speak in particular, https://en.wikipedia.org/wiki/Dyadic
16:46:06 liz joins (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net)
16:46:14 <uberrice> thanks!
16:46:17 <__monty__> uberrice: It's often called `BinOp` for binary operator. Just a name though.
16:47:00 <uberrice> i was too caught up in thinking in imperative-like languages so I got confused thinking `Dyadic` was some predefined thing for some reason
16:47:39 <EvanR> even the base types like Bool, Int, String etc are defined somewhere
16:48:22 <EvanR> so predefined, yes, built into the language no
16:48:25 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
16:48:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds)
16:49:59 econo joins (uid147250@user/econo)
16:51:25 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
16:54:04 <c_wraith> Bool is a weird case, as guards generate code that depends on Bool. So.. it's sort of part of the language in a way something like String isn't
16:54:36 <sebastiandb> This isn't related to what you guys are talking about, but how do you write guards on one line? This doesn't work in ghci: `let { myAbs n | n < 0 = -n; | otherwise = n } in myAbs -1`. It's not that important since you can just use if-else, but it's probably good to know.
16:54:50 <geekosaur> just leave out the semicolons
16:55:00 <monochrom> String literals generate code that depends on String, too.
16:55:25 <monochrom> or depends on [Char].
16:55:33 <geekosaur> > let foo a | a == 5 = 6 | a == 4 = 2 | otherwise = a - 3 in map foo [3..6]
16:55:35 <lambdabot> [0,2,6,3]
16:55:49 coco joins (~coco@212-51-146-199.fiber7.init7.net)
16:55:52 <sebastiandb> geekosaur: Thanks! Didn't realize it was that simple.
16:59:09 <sonny> How does Haskell guarantee safety if a programmer uses bytestring or string?
16:59:41 <monochrom> I think it doesn't.
17:00:19 × arjun quits (~arjun@user/arjun) (Quit: tip toe-ing my way outta here)
17:00:26 nate4 joins (~nate@98.45.169.16)
17:00:29 <sonny> hmm
17:00:33 <geekosaur> define safety
17:00:48 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:01:33 <sonny> A bytestring or string can be used as an escape hatch for other things. I was wondering how to deal with that problem so I figured maybe Haskell solved it already.
17:01:36 <c_wraith> you can still write stringly-typed code in Haskell. it's just a lot of work
17:01:57 <geekosaur> you can't e.g. abuse badly written printf escapes to smash the stack
17:02:06 <monochrom> How do I use string as an escape hatch?
17:02:23 <geekosaur> the worst that can happen with Text.Printf is a runtime type assertion
17:02:49 <sonny> oh ok
17:04:02 <geekosaur> most other such abuses aren't so much about string as about overflowing a stack-allocated variable, but in Haskell they're all on the heap and counted instead of using fixed buffers with NULs at the end
17:04:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
17:05:01 <c_wraith> think of it this way: strings aren't a security issue in Java. C just makes some special choices to enable problems.
17:05:17 <EvanR> think of a string as a type you can send anything, but not necessarily get it back. You lose information
17:05:22 × fryguybo1 quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
17:05:26 <sonny> I see
17:05:42 <EvanR> a parser makes that process well defined
17:05:44 <monochrom> Someone needs to start studying and demonstrating heap smashing...
17:06:02 <c_wraith> (and then C calls most of them undefined behavior, so you can't even count on understanding the hardware to know what will happen...)
17:06:21 stackdroid18 joins (14094@user/stackdroid)
17:06:21 <monochrom> The profit is huge since everyone puts all their eggs on the heap >:)
17:06:51 <geekosaur> easy, just make the runtime mis-count the size of something it's allocating…
17:08:11 Infinite joins (~Infinite@49.39.117.70)
17:08:24 <monochrom> Is Naur still around? He could give a talk on "the trillion dollar mistake: putting both return addresses and local arrays on the stack" >:)
17:10:30 <EvanR> oh they said safety and yall heard security xD
17:10:45 <monochrom> No, I heard safety.
17:10:47 <EvanR> i.e. protecting it from yourself or from a deviant other
17:10:57 <geekosaur> there aren't that many things that qualify for "escape hatch for oother things"
17:11:02 <monochrom> But they also said "escape hatch".
17:11:33 <EvanR> I interpreted escape hatch like, get out of this language and user another, like, eval or SQL or something xD
17:11:48 <monochrom> And I did ask for an example, so it is not like I was assuming anything.
17:11:55 <geekosaur> no escape hatch will let you escape C that way
17:12:16 quarkyalice joins (~quarkyali@user/quarkyalice)
17:12:31 <geekosaur> (not even to SQL unless you plan to make the C API calls to the SQL-evaluating engine)
17:12:50 <geekosaur> (which naturally differ for every database interface)
17:12:55 <monochrom> The SQL engine is probably written in C, too.
17:13:13 <geekosaur> but is usually in a different process (granting sqlite)
17:13:24 <EvanR> printf is an example of another language
17:13:31 <monochrom> haha
17:15:20 <EvanR> encoding important well typed information into a String, then sending that string to another process, now it has to be verified all over again in the parser. But in haskell you can actually perform this within the same program in a well typed way, so you know the parser will succeed
17:15:50 <EvanR> i.e. yeah what c_wraith said about being a lot of work
17:16:26 AlexZenon joins (~alzenon@94.233.240.20)
17:16:45 AlexNoo joins (~AlexNoo@94.233.240.20)
17:17:18 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
17:17:25 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
17:18:52 × ddb1 quits (~ddb@2607:5300:203:9993::196) (Remote host closed the connection)
17:19:11 <EvanR> (I wonder what use case that would be necessary for, as opposed to just not using a string for that at all)
17:19:17 ddb joins (~ddb@ipv6two.tilde.club)
17:19:57 Alex_test joins (~al_test@94.233.240.20)
17:21:37 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
17:22:11 quarkyalice joins (~quarkyali@user/quarkyalice)
17:37:23 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:40:08 machinedgod joins (~machinedg@66.244.246.252)
17:44:07 jakalx joins (~jakalx@base.jakalx.net)
17:44:22 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
17:53:55 simeon joins (~pi@dslb-088-069-178-224.088.069.pools.vodafone-ip.de)
17:56:09 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 248 seconds)
18:01:07 × elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 256 seconds)
18:01:42 elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
18:04:31 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
18:05:18 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
18:11:37 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
18:12:17 Sgeo joins (~Sgeo@user/sgeo)
18:16:52 × sonny quits (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca) (Quit: Client closed)
18:24:55 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
18:24:56 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
18:25:59 quarkyalice joins (~quarkyali@user/quarkyalice)
18:28:08 × Infinite quits (~Infinite@49.39.117.70) (Ping timeout: 252 seconds)
18:34:41 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:35:21 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 276 seconds)
18:35:45 nate4 joins (~nate@98.45.169.16)
18:38:34 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
18:40:12 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
18:40:35 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
18:50:00 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
18:56:38 × dtman34 quits (~dtman34@2601:446:4400:2ad9:dddf:8180:d61b:8240) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
18:56:44 yauhsien joins (~yauhsien@61-231-58-85.dynamic-ip.hinet.net)
18:56:59 dtman34 joins (~dtman34@2601:446:4400:2ad9:1078:b9d6:ea9f:9bfa)
18:57:28 quarkyalice joins (~quarkyali@user/quarkyalice)
19:01:11 × yauhsien quits (~yauhsien@61-231-58-85.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
19:04:15 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:11:52 shapr joins (~user@2600:4040:2d31:7100:677f:8b5d:34bb:4aea)
19:17:26 zeenk joins (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
19:18:12 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:18:26 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:20:43 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265)
19:20:46 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
19:22:20 nate4 joins (~nate@98.45.169.16)
19:22:35 <sebastiandb> Is there a good way in Haskell to represent a matrix of any size? Something you could use to represent any of Tic-Tac-Toe, Sudoku, or the snake game? Because I feel like just using a type synonym for a list of lists is a little hackish.
19:23:26 <sebastiandb> Oh, Data.Matrix. Sorry, I should have looked this up first.
19:23:43 <[exa]> there are actual matrix types, also Vector (which you can "fold" yourself), and regular arrays (e.g. repa)
19:23:47 <geekosaur> or Data.Vector
19:23:53 coot joins (~coot@213.134.190.95)
19:23:57 <geekosaur> ohh sorry, I'm slow
19:24:08 <[exa]> tbh Matrix has a lot of math connotation usually so I'd support Data.Vector, yes.
19:24:27 <geekosaur> lists are probably the wrong type here, although for tic-tac-toe it would be good enough
19:26:08 <sebastiandb> Thanks for the recommendation for Data.Vector, then!
19:26:49 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
19:27:19 <[exa]> btw is there some kinda True Functional Representation of a zippable matrix?
19:27:36 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:29:25 × lagash_ quits (lagash@lagash.shelltalk.net) (Remote host closed the connection)
19:29:37 × zeenk quits (~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Ping timeout: 244 seconds)
19:29:46 zeenk joins (~zeenk@188.26.144.225)
19:30:21 lagash joins (lagash@lagash.shelltalk.net)
19:31:34 <EvanR> IntMaps are your friend
19:31:57 <EvanR> (though Int isn't "true functional" data)
19:32:47 <EvanR> IntMaps were great in the last advent of code which called for a lot of "grids"
19:34:06 <[exa]> hmm yeah, and the thing is a tree and you can have some sane spatial ordering of the ints. great
19:34:09 <[exa]> thanks!
19:42:33 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
19:49:30 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
19:49:30 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
19:49:30 wroathe joins (~wroathe@user/wroathe)
19:51:57 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
19:52:21 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265) (Remote host closed the connection)
19:52:30 × quarkyalice quits (~quarkyali@user/quarkyalice) (Quit: quarkyalice)
19:52:59 earthy joins (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net)
19:55:27 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:56:01 nate4 joins (~nate@98.45.169.16)
20:02:08 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds)
20:06:32 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
20:06:41 pleo joins (~pleo@user/pleo)
20:08:57 × liz quits (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net) (Ping timeout: 248 seconds)
20:09:18 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:17:57 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 258 seconds)
20:19:11 pretty_dumm_guy joins (~trottel@eduroam-134-96-204-3.uni-saarland.de)
20:19:12 × pretty_dumm_guy quits (~trottel@eduroam-134-96-204-3.uni-saarland.de) (Client Quit)
20:19:50 pretty_dumm_guy joins (~trottel@eduroam-134-96-204-3.uni-saarland.de)
20:20:12 × pretty_dumm_guy quits (~trottel@eduroam-134-96-204-3.uni-saarland.de) (Client Quit)
20:21:45 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 248 seconds)
20:21:50 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:23:20 ss- joins (~ss-@187.83.249.216.dyn.smithville.net)
20:34:09 jgeerds joins (~jgeerds@55d45f48.access.ecotel.net)
20:37:18 Kevin578 joins (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
20:38:09 × coco quits (~coco@212-51-146-199.fiber7.init7.net) (Quit: WeeChat 3.3)
20:39:11 nate4 joins (~nate@98.45.169.16)
20:43:50 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
20:52:45 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265)
20:57:29 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265) (Ping timeout: 255 seconds)
21:02:20 × sebastiandb quits (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
21:08:00 machinedgod joins (~machinedg@66.244.246.252)
21:13:40 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:15:47 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
21:19:21 × ss- quits (~ss-@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
21:20:35 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 256 seconds)
21:22:36 machinedgod joins (~machinedg@66.244.246.252)
21:24:22 acidjnk joins (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de)
21:25:51 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:34:53 × dwt_ quits (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Ping timeout: 246 seconds)
21:35:16 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:35:53 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds)
21:36:41 dwt_ joins (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net)
21:39:18 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 276 seconds)
21:39:52 pavonia joins (~user@user/siracusa)
21:43:52 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:44:32 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
21:44:57 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 256 seconds)
21:46:54 machinedgod joins (~machinedg@66.244.246.252)
21:53:21 sonny joins (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca)
21:54:43 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:59:18 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:05:04 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
22:05:25 pragma- joins (~chaos@user/pragmatic-chaos)
22:09:19 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:21c1:4642:3625:e265)
22:09:24 × zer0bitz quits (~zer0bitz@2001:2003:f748:2000:15be:cdf1:24c0:fca7) (Read error: Connection reset by peer)
22:14:46 stiell joins (~stiell@gateway/tor-sasl/stiell)
22:15:50 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
22:17:18 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:18:57 × Kevin578 quits (~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
22:26:30 azimut joins (~azimut@gateway/tor-sasl/azimut)
22:28:50 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
22:29:09 azimut joins (~azimut@gateway/tor-sasl/azimut)
22:32:46 Furor joins (~colere@about/linux/staff/sauvin)
22:35:05 × Colere quits (~colere@about/linux/staff/sauvin) (Ping timeout: 246 seconds)
22:37:31 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
22:38:39 sonny parts (~sonny@bras-base-toroon0812w-grc-01-142-114-220-108.dsl.bell.ca) ()
22:39:07 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:42:04 nate4 joins (~nate@98.45.169.16)
22:45:27 liz joins (~liz@cpc84585-newc17-2-0-cust60.16-2.cable.virginm.net)
22:51:07 × alp__ quits (~alp@user/alp) (Ping timeout: 244 seconds)
22:52:06 × acidjnk quits (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de) (Ping timeout: 276 seconds)
22:53:14 × adium quits (adium@user/adium) (Quit: Stable ZNC by #bnc4you)
22:53:58 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
22:54:48 stiell joins (~stiell@gateway/tor-sasl/stiell)
22:56:53 Feuermagier joins (~Feuermagi@user/feuermagier)
22:56:59 acidjnk joins (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de)
22:58:31 × acidjnk quits (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de) (Remote host closed the connection)
22:58:54 acidjnk joins (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de)
23:01:52 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
23:02:27 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
23:03:26 × acidjnk quits (~acidjnk@dynamic-002-247-244-015.2.247.pool.telefonica.de) (Ping timeout: 246 seconds)
23:08:00 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
23:08:33 adium joins (adium@user/adium)
23:09:37 × tomgus1 quits (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) (Ping timeout: 260 seconds)
23:10:12 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
23:10:35 tomgus1 joins (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3)
23:11:30 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
23:15:01 sebastiandb joins (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net)
23:18:20 alp__ joins (~alp@user/alp)
23:19:34 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
23:21:10 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
23:21:38 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
23:21:44 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
23:22:58 Lord_of_Life_ is now known as Lord_of_Life
23:25:32 Pickchea joins (~private@user/pickchea)
23:26:28 × YoungFrog quits (~youngfrog@2a02:a03f:c21b:f900:9057:83fb:8876:5481) (Ping timeout: 248 seconds)
23:27:53 × m1dnight quits (~christoph@78-22-9-5.access.telenet.be) (Ping timeout: 248 seconds)
23:28:10 × jgeerds quits (~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 240 seconds)
23:32:03 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
23:33:10 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5)
23:34:10 × sebastiandb quits (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
23:36:22 × Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.)
23:38:30 × odnes quits (~odnes@5-203-186-208.pat.nym.cosmote.net) (Quit: Leaving)
23:38:41 nate4 joins (~nate@98.45.169.16)
23:47:34 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
23:48:17 ec_ joins (~ec@gateway/tor-sasl/ec)
23:50:35 m1dnight joins (~christoph@78-22-9-5.access.telenet.be)
23:50:36 × machinedgod quits (~machinedg@66.244.246.252) (Ping timeout: 276 seconds)
23:51:46 machinedgod joins (~machinedg@66.244.246.252)
23:54:22 sebastiandb joins (~sebastian@pool-108-31-128-56.washdc.fios.verizon.net)
23:55:19 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:57:19 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
23:57:47 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
23:58:18 × zeenk quits (~zeenk@188.26.144.225) (Quit: Konversation terminated!)
23:59:44 juri__ joins (~juri@79.140.115.76)

All times are in UTC on 2022-06-19.