Home freenode/#haskell: Logs Calendar

Logs on 2020-11-29 (freenode/#haskell)

00:01:07 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:02:07 aneksteind joins (~anekstein@pool-108-7-199-207.bstnma.fios.verizon.net)
00:02:48 × coot quits (~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
00:03:09 cosimone_ joins (~cosimone@5.170.241.230)
00:03:25 × falafel_ quits (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 240 seconds)
00:03:31 <aneksteind> does there exist a generalization of `Either`, something like `OneOf a b c d` ... that can have an arbitrary number of constructors?
00:04:17 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 260 seconds)
00:04:33 cosimone_ is now known as cosimone
00:04:48 <dminuoso> aneksteind: Well Either is that already.
00:04:56 <dminuoso> Since you can do `Either (Either Int String) Char` and so forth
00:05:37 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
00:05:39 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
00:05:58 <dminuoso> Or just plain ADTs.
00:06:31 <dminuoso> That is, `Either (Either Int String) Char` is equivalent to `data T = T1 Int | T2 String | T3 Char`
00:06:43 <dminuoso> (Or the better term here is isomorphic)
00:07:03 mikevdg joins (73bd80f5@115-189-128-245.mobile.spark.co.nz)
00:07:58 acarrico joins (~acarrico@68.142.39.249)
00:09:33 <sm[m]> I'm not missing a capitalize function in base, am I ?
00:09:36 <nshepperd> i think aneksteind is asking for anonymous cotuples, the dual of (a,b,c,d)
00:09:49 <dminuoso> Well, (a,b,c,d) is not generalized either.
00:10:01 <dminuoso> We just have all these tuple constructors hacked in manually...
00:11:04 <nshepperd> sure
00:11:19 <nshepperd> it's non generalised with fancy uniform syntax
00:11:50 <erisco> aneksteind, you can get hacking with variants and row types, unadvisable without a high payoff
00:11:53 <dminuoso> Even if we had some fancy uniform syntax for coproducts, pattern matching wouldn't be as pretty
00:12:58 × mikevdg quits (73bd80f5@115-189-128-245.mobile.spark.co.nz) (Remote host closed the connection)
00:13:27 <aneksteind> where can I look into variants (is that similar to C++ variants?) I'm mostly curious what can be done, this isn't for anything in particular
00:14:02 <nshepperd> there's unboxed sums but that syntax feels a bit janky
00:14:10 <aneksteind> I found this: https://hackage.haskell.org/package/haskus-utils-variant
00:14:26 <nshepperd> https://gitlab.haskell.org/ghc/ghc/-/wikis/unpacked-sum-types
00:14:56 <dminuoso> Gah that wiki is so awfully slow
00:15:06 dminuoso hates gitlab with a passion
00:17:54 <erisco> aneksteind, there seem to be a few packages floating around for it
00:18:01 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
00:18:45 irc_user joins (uid423822@gateway/web/irccloud.com/x-bjmhyxzylfubvsgp)
00:21:26 <koz_> nshepperd: "NOTE (osa): This part is not yet implemented, but the patch is trivial and I'm going to submit it soon)"
00:21:26 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
00:21:28 koz_ laughs.
00:21:36 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
00:25:12 × jchia__ quits (~jchia@58.32.37.146) (Ping timeout: 256 seconds)
00:26:27 × acidjnk_new quits (~acidjnk@p200300d0c719ff59c0fa403c32c1f5ec.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:27:28 <aneksteind> found this as well for those curious: https://github.com/i-am-tom/learn-me-a-haskell/blob/master/src/OneOf.hs
00:27:34 <Uniaika> koz_: hahaha
00:28:52 <nshepperd> ah yes, the mythical trivial patch
00:29:10 <Uniaika> nshepperd: that is arriving as soon as you have time
00:29:15 <Uniaika> we've all done that
00:30:25 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
00:30:35 × mivael quits (c16e4caa@193.110.76.170) (Quit: ::::: see you, bye :::::)
00:31:21 DTZUZU_ joins (~DTZUZU@205.ip-149-56-132.net)
00:31:37 × wayne quits (~wayne@unaffiliated/wayne) (Remote host closed the connection)
00:32:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:33:25 × DTZUZU quits (~DTZUZU@207.81.171.116) (Ping timeout: 240 seconds)
00:37:16 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 240 seconds)
00:38:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
00:41:16 × acarrico quits (~acarrico@68.142.39.249) (Ping timeout: 240 seconds)
00:42:29 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
00:42:33 × Inoperable quits (~PLAYER_1@fancydata.science) (Excess Flood)
00:43:42 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
00:45:48 Inoperable joins (~PLAYER_1@fancydata.science)
00:46:57 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
00:53:05 sh9 joins (~sh9@softbank060116136158.bbtec.net)
00:55:39 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
01:00:30 frdg joins (~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
01:01:39 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
01:03:47 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
01:05:45 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
01:06:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:09:27 LKoen joins (~LKoen@169.244.88.92.rev.sfr.net)
01:10:45 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
01:12:00 × AndreasK quits (sid320732@gateway/web/irccloud.com/x-jisuwtkhbrktjxky) (Quit: Connection closed for inactivity)
01:17:25 × cosimone quits (~cosimone@5.170.241.230) (Quit: cosimone)
01:17:33 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
01:20:48 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
01:25:41 texasmyn_ joins (~texasmyns@212.102.45.106)
01:26:05 × texasmynsted quits (~texasmyns@212.102.45.103) (Ping timeout: 240 seconds)
01:27:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:29:17 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection)
01:30:17 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
01:33:01 × unlink__ quits (~unlink2@p200300ebcf179a00278fd81c0246cc89.dip0.t-ipconnect.de) (Remote host closed the connection)
01:33:14 unlink__ joins (~unlink2@p200300ebcf179a00278fd81c0246cc89.dip0.t-ipconnect.de)
01:33:16 × _linker_ quits (~linker@2a02:a31a:a041:9a80:51cd:d8f1:9cea:4020) (Remote host closed the connection)
01:35:07 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 256 seconds)
01:38:40 Lord_of_Life joins (~Lord@46.217.217.219)
01:40:13 × Lord_of_Life_ quits (~Lord@46.217.216.13) (Ping timeout: 256 seconds)
01:40:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
01:42:41 <MarcelineVQ> hey you
01:42:46 <MarcelineVQ> good job today
01:43:00 <MarcelineVQ> it was a tough day but you got through it
01:43:10 × texasmyn_ quits (~texasmyns@212.102.45.106) (Ping timeout: 265 seconds)
01:44:21 iqubic joins (~user@2601:602:9500:4870:71ac:d28d:5123:4cbd)
01:44:59 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
01:45:28 × aneksteind quits (~anekstein@pool-108-7-199-207.bstnma.fios.verizon.net) ()
01:46:06 conal joins (~conal@64.71.133.70)
01:46:06 × conal quits (~conal@64.71.133.70) (Client Quit)
01:47:20 hackage polysemy-resume 0.1.0.1 - Polysemy error tracking https://hackage.haskell.org/package/polysemy-resume-0.1.0.1 (tek)
01:48:41 conal joins (~conal@64.71.133.70)
01:49:10 triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca)
01:52:08 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
01:52:14 a-kiwi3 joins (61664b96@gateway/web/cgi-irc/kiwiirc.com/ip.97.102.75.150)
01:52:20 Volt_ joins (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net)
01:54:14 wayne joins (~wayne@unaffiliated/wayne)
01:57:27 livvy joins (~livvy@gateway/tor-sasl/livvy)
01:58:20 rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
01:58:30 × hidedagger quits (~nate@unaffiliated/hidedagger) (Ping timeout: 260 seconds)
02:00:23 reallymemorable joins (~quassel@ip68-9-215-56.ri.ri.cox.net)
02:00:39 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
02:00:42 jchia__ joins (~jchia@45.63.70.29)
02:01:43 × jchia__ quits (~jchia@45.63.70.29) (Remote host closed the connection)
02:02:44 jchia__ joins (~jchia@45.63.70.29)
02:03:46 × jchia__ quits (~jchia@45.63.70.29) (Remote host closed the connection)
02:03:47 <iqubic> jle`: It seems that your advent-of-code-api library has broken. I'm trying to compile it with Cabal and GHC 8.10.2 and I'm getting this error: https://dpaste.com/A64ZXSQZS
02:04:45 jchia__ joins (~jchia@45.63.70.29)
02:04:51 a-kiwi3 parts (61664b96@gateway/web/cgi-irc/kiwiirc.com/ip.97.102.75.150) ()
02:05:18 <MarcelineVQ> jle`: you monster
02:05:30 <iqubic> What's the issue now?
02:06:30 × jchia__ quits (~jchia@45.63.70.29) (Remote host closed the connection)
02:06:41 × joaj quits (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 272 seconds)
02:06:53 jchia__ joins (~jchia@58.32.37.146)
02:07:21 <Ariakenom> MarcelineVQ: hey
02:07:26 <Ariakenom> you even encouraged others
02:07:30 joaj joins (~joaj@138.104.115.89.rev.vodafone.pt)
02:07:43 <Ariakenom> you wrecked today!
02:10:41 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
02:11:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:12:16 <iqubic> From what I can tell, some package updated, and now jle` has a broken package
02:16:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
02:18:02 <ezzieyguywuf> can you all recommend any packages for handling configuration files?
02:18:09 <ezzieyguywuf> or you you typically just roll your own?
02:18:56 <ezzieyguywuf> s/you you/do you /
02:21:24 × Ariakenom quits (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Quit: Leaving)
02:21:56 livvy_ joins (~livvy@gateway/tor-sasl/livvy)
02:22:12 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
02:22:55 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
02:23:26 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
02:23:39 × reallymemorable quits (~quassel@ip68-9-215-56.ri.ri.cox.net) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
02:25:49 reallymemorable joins (~quassel@ip68-9-215-56.ri.ri.cox.net)
02:26:01 ambidextrose joins (~fut-learn@mobile-166-171-123-173.mycingular.net)
02:26:22 <koz_> ezzieyguywuf: Depends on format.
02:27:19 <dsal> ezzieyguywuf: It's not a recommendation, but I typically just write the thing I want to express into a file, then I write a parser for that thing that made sense to me.
02:27:25 <dsal> I used dhall once.
02:27:38 × xff0x quits (~fox@2001:1a81:5212:df00:d7cf:4a87:a54b:9a9b) (Ping timeout: 264 seconds)
02:27:40 × ambidextrose quits (~fut-learn@mobile-166-171-123-173.mycingular.net) (Client Quit)
02:27:46 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
02:28:38 <ezzieyguywuf> dsal: I was thinking of something along those lines honestly
02:28:51 × revprez_stg quits (~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net) (Quit: Lost terminal)
02:29:18 × Digitteknohippie quits (~user@fsf/member/digit) (Ping timeout: 260 seconds)
02:29:19 conal joins (~conal@64.71.133.70)
02:29:24 xff0x joins (~fox@2001:1a81:524c:7b00:8105:569c:1b26:2c3d)
02:29:41 × conal quits (~conal@64.71.133.70) (Client Quit)
02:30:50 <ezzieyguywuf> koz_: I don't have a set format. mostly just "git yur data into my code"
02:31:18 <koz_> ezzieyguywuf: Then just pick one. There's a few conf-like thingoes floating around, or you can use like, YAML, or TOML, or JSON, or w/e.
02:31:48 <koz_> (why do all these formats have four-letter acronyms rofl)
02:32:50 <ezzieyguywuf> I've heard of yaml and json
02:33:34 <hololeap> i've seen toml around in my system config files
02:34:27 <ezzieyguywuf> maybe i'll try that
02:34:31 <ezzieyguywuf> thanks for the tips y'all
02:34:43 <koz_> I think there's a Haskell package for TOML parsing?
02:34:45 koz_ shruggoes.
02:34:54 <koz_> Dhall is an option, but a pretty nuclear one.
02:35:18 <koz_> (it's a heavy dep, and I'm _still_ not 100% clear on what it does or doesn't do because it keeps moving around and the docs are lacking)
02:35:56 × Chi1thangoo quits (~Chi1thang@87.112.60.168) (Ping timeout: 240 seconds)
02:36:10 <ezzieyguywuf> koz_: I like to avoid heavy deps, haven't learned lens yet for that reason
02:36:29 <koz_> Hmm.
02:36:44 <koz_> Someone (I think it was glguy?) wrote something for parsing a conf-like format, but I forget.
02:36:49 <koz_> It was pretty lightweight IIRC.
02:37:12 <nshepperd> you can use a plain old ini file
02:37:16 <ezzieyguywuf> I see some configparser-clones
02:37:20 <ezzieyguywuf> but toml sounds nice.
02:37:22 <glguy> Yeah, "config-value" has minimal dependencies
02:37:41 <koz_> That was the one.
02:38:13 <glguy> "config-schema" has a couple more but it's still pretty light. (It's a helper for making it easy to process configurations)
02:39:04 <glguy> There's a live demo https://glguy.net/config-demo/
02:39:33 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
02:39:35 × LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
02:39:59 <ezzieyguywuf> 4 dependencies, nice. https://hackage.haskell.org/package/toml-parser-0.1.0.0
02:40:12 <ezzieyguywuf> lol, one of which is base.
02:40:21 <koz_> ezzieyguywuf: Those are all boot packages.
02:40:24 <koz_> So it's actually 0. :P
02:40:40 <ezzieyguywuf> but also v 0.1.0.0
02:40:42 <ezzieyguywuf> so *shrug*
02:41:03 <koz_> glguy: config-schema is great and so are you.
02:41:09 <ezzieyguywuf> hey it's his!
02:41:19 <ezzieyguywuf> glguy made it (the toml parser I linked)
02:41:57 <ezzieyguywuf> glguy: isyour toml parser good to go? repo looks stale and the version number suggests to me perhaps its incomplete?
02:42:02 <glguy> I need to fix a bug in that toml parser that was pointed out here
02:42:29 <koz_> ezzieyguywuf: Sub 1.0 version numbers mean basically nothing.
02:42:34 <ezzieyguywuf> glguy: is it one of the two issues listed on github?
02:42:36 <glguy> I don't use it for anything, I prefer the config-value stuff I made for my own work
02:42:44 <koz_> (vector is sub-1.0 for example, and I doubt anyone would seriously suggest it's somehow incomplete)
02:44:15 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
02:44:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:44:42 <glguy> Sub-1 doesn't mean anything special in pvp
02:45:09 <iqubic> So jle`'s Advent Of Code API library is not compiling for me. I'm getting this error: https://dpaste.com/A64ZXSQZS
02:45:19 <iqubic> Anyone know what's going on there?
02:45:39 ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta)
02:45:51 hackage tweet-hs 1.0.2.2 - Command-line tool for twitter https://hackage.haskell.org/package/tweet-hs-1.0.2.2 (vmchale)
02:47:56 <hololeap> can you run megaparsec "in reverse"? i'd like to grab the extentions of some files, and some have two-part extensions. if it parsed the string in reverse, it could save me a headache.
02:48:44 <koz_> hololeap: Two-part meaning something like .tar.gz?
02:49:16 <hololeap> koz_: correct, and some of the filename bodies have '.' in them, so System.Posix.Files is getting a little confused
02:49:36 <hololeap> rather, System.FilePath.Posix
02:49:52 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds)
02:51:06 <ezzieyguywuf> or reeverse the string is try to parse gz.rat.
02:51:15 <koz_> zg.rat :P
02:51:17 conal joins (~conal@64.71.133.70)
02:51:22 <ezzieyguywuf> lol yea
02:51:25 <hololeap> i know i could do someting like `parse (string (reverse ".tar.gz") <|> string (reverse ".log")) f (reverse s)`
02:51:28 <koz_> And you'd have to re-reverse (verse?) it again.
02:51:41 <ezzieyguywuf> lol, verse.
02:51:46 wei2912 joins (~wei2912@unaffiliated/wei2912)
02:52:59 <ezzieyguywuf> the config-value stuff looks really neat, per the live demo.
02:53:04 <ezzieyguywuf> but also seems like a lot of work, lol.
02:53:21 <koz_> ezzieyguywuf: In what sense? To use, or to implement?
02:53:56 × m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds)
02:54:35 <ezzieyguywuf> use.
02:54:48 <ezzieyguywuf> i.e. b/c of the schema thingy.
02:54:57 <ezzieyguywuf> i mean, once you learn it it's probs not that hard
02:55:16 <koz_> ezzieyguywuf: You don't have to use config-schema though?
02:55:35 <ezzieyguywuf> koz_: oh forrill? maybe I misunderstood tho point of the live demo then
02:56:21 <koz_> ezzieyguywuf: http://hackage.haskell.org/package/config-value-0.8/docs/Config.html#v:parse
02:56:59 <koz_> config-schema makes it more user-friendly and safe, but you can use just that to get 'whatever the hell', and take it apart by hand if you so wish.
02:57:04 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
02:57:36 × joaj quits (~joaj@138.104.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds)
02:58:03 <ezzieyguywuf> hrm, I'll take a deeper look.
03:01:08 × Volt_ quits (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: )
03:01:12 <ezzieyguywuf> blahh, but config-schema makes it user-friendly and safe, why would I avoid.
03:01:24 <ezzieyguywuf> lol, ok I'll spend moar than 2 seconds on this
03:01:33 <ezzieyguywuf> I am, after all, on my adhd meds
03:05:20 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
03:06:23 conal joins (~conal@64.71.133.70)
03:07:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
03:07:37 <glguy> ezzieyguywuf, just ping me if you have questions about how to use either
03:07:58 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
03:08:20 <glguy> If you end up using the config-schema stuff I have examples in https://hackage.haskell.org/package/config-schema-1.2.1.0/docs/Config-Schema-Spec.html
03:09:13 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 264 seconds)
03:09:18 <ezzieyguywuf> glguy: thanks I appreciate the offer.
03:10:38 × conal quits (~conal@64.71.133.70) (Client Quit)
03:13:51 <ezzieyguywuf> glguy: what file extension do you use for conf files? lol.
03:13:51 conal joins (~conal@64.71.133.70)
03:13:59 <glguy> .cfg :)
03:14:04 <ezzieyguywuf> nice.
03:14:33 <glguy> I have vim syntax highlighting, but that's about it
03:15:56 <ezzieyguywuf> glguy: yea I saw that, that's what had me wondering about file extension
03:16:08 <glguy> I put this at the bottom so vim picks it up -- vim: filetype=config-value
03:17:05 justsomeguy has a random thought -- syntax highlighting emphasizes the wrong things: keywords and punctuation rather than names.
03:17:51 <glguy> That probably doesn't apply to a configuration language
03:18:04 <ezzieyguywuf> justanotheruser: I've been using nofrils colorscheme in vim for a few months now, pretty happy
03:18:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
03:18:28 <ezzieyguywuf> glguy: vim recognises that at the bottom of the file?! I didn't know vim could do that...
03:19:27 <glguy> https://ibb.co/26yfm2y example from my IRC client configuration
03:20:04 <glguy> highlighting helps notice escapes in string literals, distinguish strings from atoms, etc
03:21:07 <ezzieyguywuf> altought I modified it to highlight strings https://i.imgur.com/yaAppbE.png
03:21:32 <iqubic> I wish I knew why this fails to build with GHC 8.10.2 https://hackage.haskell.org/package/advent-of-code-api
03:21:58 <glguy> iqubic, that packages doesn't list any package bounds; it's intended to decay and fail to build
03:22:11 <iqubic> Really?
03:22:34 <iqubic> So, will I just have to wait for jle` to come around and fix it?
03:23:02 <glguy> or guess at the bounds and submit a PR
03:23:12 <iqubic> Hmm, that sounds difficult.
03:25:07 <iqubic> I was planning on using this to download my data for AOC, as I did last year, but that doesn't look like it will work.
03:26:05 <iqubic> AOC = Advent of Code. I'm planning on making a toolkit of functions for use this year, and I wanted this to be part of it, like it was last year.
03:28:55 <iqubic> Now, seeing as that might not be working this year, I'm going to ask a different question: what does readFile return? I know it's an IO String, but does that string contain a trailing new line or not?
03:31:17 <iqubic> jle`: Do you have any plans on updating you AoC-API that's on Hackage anytime soon?
03:31:35 <iqubic> glguy: Are you going to be creating a haskell leaderboard this year?
03:31:41 ambidextrose joins (~fut-learn@mobile-166-171-122-120.mycingular.net)
03:32:27 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
03:33:18 × ambidextrose quits (~fut-learn@mobile-166-171-122-120.mycingular.net) (Client Quit)
03:33:33 <glguy> It's the same one every year
03:33:58 <glguy> 43100-84040706
03:34:11 <iqubic> Do I need to do anything special to join it for this year, if I was on the leaderboard last year?
03:34:17 <glguy> nuh uh
03:34:32 <glguy> You're still there
03:34:43 <iqubic> Oh, you can just see that?
03:35:09 <iqubic> s/that/me/
03:37:03 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (adams.freenode.net (Nickname regained by services)))
03:37:11 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
03:39:24 kupi joins (uid212005@gateway/web/irccloud.com/x-hiccaslramtbqzdd)
03:39:48 × Wuzzy quits (~Wuzzy@p549c9976.dip0.t-ipconnect.de) (Quit: Wuzzy)
03:39:49 × reallymemorable quits (~quassel@ip68-9-215-56.ri.ri.cox.net) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
03:39:55 <kupi> is it a good decision to write this function? if' :: a -> a -> Bool -> a
03:40:14 <glguy> :t Data.Bool.bool
03:40:15 <lambdabot> a -> a -> Bool -> a
03:40:27 <kupi> thanks
03:40:33 <glguy> kupi, 1) it's already defined 2) it generally leads to less-readable code
03:41:03 × theDon quits (~td@muedsl-82-207-238-090.citykom.de) (Ping timeout: 272 seconds)
03:41:14 <kupi> what else you recommend when I >>= a Monad Bool?
03:42:30 theDon joins (~td@94.134.91.51)
03:43:08 <glguy> except in perhaps the most trivial cases: do usefulName <- something; if usefulName then this else that
03:43:29 trepanger joins (~z@ics141-225.icsincorporated.com)
03:45:00 hughjfchen joins (81221413@129.34.20.19)
03:46:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:46:06 × hughjfchen quits (81221413@129.34.20.19) (Remote host closed the connection)
03:47:31 <solonarv> if you don't want to name the thing you can turn on LambdaCase and write: something >>= \case True -> this; False -> that
03:48:29 <kupi> or something >>= \case True -> this; _ -> that
03:48:36 × andi- quits (~andi-@NixOS/user/andi-) (Remote host closed the connection)
03:49:29 caecilius is now known as philopsos
03:50:19 × lxsameer quits (~lxsameer@unaffiliated/lxsameer) (Ping timeout: 246 seconds)
03:51:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
03:53:57 <kupi> but I prefer >>= bool this that
03:55:34 andi- joins (~andi-@NixOS/user/andi-)
03:58:09 lxsameer joins (~lxsameer@unaffiliated/lxsameer)
03:59:18 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
03:59:30 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection)
04:00:05 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
04:02:18 × trepanger quits (~z@ics141-225.icsincorporated.com) (Quit: leaving)
04:03:03 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
04:04:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:04:36 × alx741 quits (~alx741@181.196.69.215) (Ping timeout: 240 seconds)
04:05:18 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
04:06:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
04:09:52 <ezzieyguywuf> glguy: so I hvaen't gotten to config-schema yet, but I made a basic config file, and parsed it succesfully. but I'm at a bit of a loss as to what to do next. This `Value Position` data I have seems very handy, but how do I interogate it? i.e. "give my the list in section 2"
04:10:58 <glguy> You either write functions to take apart the Value type and find what you wnt
04:11:04 <glguy> or you use the ones I provide for you in config-schema
04:11:19 <ezzieyguywuf> ah hah! config-schema rears its head!
04:11:21 <ezzieyguywuf> thanks
04:12:22 actuallybatman joins (~sam@S010664777dafd303.cg.shawcable.net)
04:13:04 <glguy> ezzieyguywuf, but on its own you interrogate with pattern matching
04:14:05 <glguy> There are some helpers defined for if you're using lens: https://hackage.haskell.org/package/config-value-0.8/docs/Config-Lens.html
04:14:28 <ezzieyguywuf> glguy: I don't really gr0k lens at the moment
04:14:36 <glguy> Well, then ignore that
04:16:44 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:17:16 × darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 240 seconds)
04:17:44 alx741 joins (~alx741@186.178.110.99)
04:19:38 <koz_> ezzieyguywuf: Pattern matching in general gets you surprisingly far with everything.
04:20:56 jedws joins (~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au)
04:23:05 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:24:55 × actuallybatman quits (~sam@S010664777dafd303.cg.shawcable.net) (Quit: leaving)
04:25:03 × marek quits (~mmahut@209.250.249.245) (Ping timeout: 260 seconds)
04:26:09 <glguy> Prelude Config.Schema Config Data.Functor.Alt> let spec :: ValueSpec [Int]; spec = listSpec (0 <$ atomSpec "default" <!> numSpec) in case parse "[1,default,4]" of Right v -> print (loadValue spec v) >> print (generateDocs spec)
04:26:10 <glguy> Right [1,0,4]
04:26:10 <glguy> Top-level configuration file format:
04:26:11 <glguy> list of (`default` or integral number)
04:30:33 marek joins (~mmahut@209.250.249.245)
04:33:01 <ezzieyguywuf> the schema stuff seems to pretty much document itself, after reading the examples
04:33:23 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
04:33:47 <glguy> If you'll tell me anything that seems poorly explained I'd use that to improve the explanations
04:35:02 <ezzieyguywuf> glguy: I'll let you know
04:35:18 × vg quits (~vg@139.59.59.230) (Read error: Connection reset by peer)
04:35:36 vg joins (~vg@139.59.59.230)
04:35:43 actuallybatman joins (~sam@S010664777dafd303.cg.shawcable.net)
04:35:45 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:35:52 <MarcelineVQ> glguy: hey, good job. you're a great guy, doing all your helpfuol stiff all the time
04:36:17 <glguy> That's nice of you to say, MarcelineVQ.
04:36:33 <MarcelineVQ> you're worth it
04:37:22 × JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 256 seconds)
04:38:09 × nek0 quits (~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat)
04:38:14 <koz_> MarcelineVQ, the L'Oreal rep. :P
04:39:25 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
04:41:23 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
04:43:15 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 256 seconds)
04:44:14 × ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
04:45:50 <MarcelineVQ> l' gariet frucitis o la config
04:46:12 <MarcelineVQ> zhuehuee'
04:47:38 <koz_> I think MarcelineVQ is malfunctioning.
04:48:28 <MarcelineVQ> wwww
04:48:36 acidjnk_new joins (~acidjnk@p200300d0c719ff597d005cd8d9846e4e.dip0.t-ipconnect.de)
04:49:07 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
04:49:13 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:51:18 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
04:56:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
04:58:55 × solonarv quits (~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr) (Ping timeout: 265 seconds)
04:59:39 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:03:27 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
05:04:51 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
05:06:49 × vg quits (~vg@139.59.59.230) (Ping timeout: 264 seconds)
05:08:52 petersen joins (~petersen@redhat/juhp)
05:09:51 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
05:09:56 xpika joins (~alan@2001:8003:5d32:1f00:a5ad:52a6:3658:edb9)
05:11:28 <xpika> does anyone know a library that handles creations of Lists of Lists that makes it easy to apply breakpoints?
05:11:42 <xpika> > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = [("":)] in foldr ($) [""] (map single "hello"++break++map single "world")
05:11:45 <lambdabot> ["hello","world"]
05:13:29 <xpika> perhaps could be used with the writer monad eg. tall (single 1) ; tell break
05:15:21 hackage store 0.7.8 - Fast binary serialization https://hackage.haskell.org/package/store-0.7.8 (MichaelSloan)
05:15:41 <koz_> xpika: What do you mean by 'breakpoints' here?
05:16:21 hackage store-core 0.4.4.4 - Fast and lightweight binary serialization https://hackage.haskell.org/package/store-core-0.4.4.4 (MichaelSloan)
05:16:22 <xpika> koz_: the boundaries between lists
05:17:20 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
05:17:27 × Zao_ quits (~Zao_@185.204.1.185) (Remote host closed the connection)
05:17:35 <xpika> koz_: I don't mean debug breakpoints if that's what you were thinking
05:17:44 <koz_> xpika: Yeah, I was a bit confused there.
05:18:24 × irc_user quits (uid423822@gateway/web/irccloud.com/x-bjmhyxzylfubvsgp) (Quit: Connection closed for inactivity)
05:18:28 × jedws quits (~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:18:57 <xpika> char 'a' ; char 'b' ; break ; char '1' ; break ; char '4'
05:18:58 <xpika> => ["ab","1",4"]
05:19:53 <koz_> Are you dealing with general lists? Or are you really dealing with lists of strings? Do you care that it's expressly _lists_?
05:20:16 <xpika> anything that I can convert to a list would be fine
05:20:45 trepanger joins (~z@ics141-225.icsincorporated.com)
05:21:14 × remexre quits (~nathan@207-153-38-50.fttp.usinternet.com) (Ping timeout: 272 seconds)
05:23:07 <koz_> Assuming the 'lists of strings' case, you could work with some wrapper around Seq Builder, then write some ops around that?
05:23:23 <koz_> If it's general stuff, Seq (Seq a) maybe?
05:23:30 ambidextrose joins (~fut-learn@mobile-166-171-122-147.mycingular.net)
05:25:05 <xpika> Yeah I could roll my own. But I'm interested if others made a library to do what seems very basic.
05:25:33 <koz_> It's a pretty niche thing honestly.
05:25:40 <koz_> I've yet to ever see need for such a thing.
05:29:56 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
05:30:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:31:25 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 256 seconds)
05:31:35 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
05:31:51 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
05:35:37 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
05:37:25 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 240 seconds)
05:37:58 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
05:41:44 remexre joins (~nathan@207-153-38-50.fttp.usinternet.com)
05:49:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
05:49:28 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
05:50:07 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
05:50:53 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:53:03 <xpika> > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = ([]:) in foldr ($) [[]] (concatMap (\x -> if odd x then [single x ,break] else [single x]) [1..10])
05:53:06 <lambdabot> [[1],[2,3],[4,5],[6,7],[8,9],[10]]
05:53:07 petersen joins (~petersen@redhat/juhp)
05:54:21 hackage th-utilities 0.2.4.1 - Collection of useful functions for use with Template Haskell https://hackage.haskell.org/package/th-utilities-0.2.4.1 (MichaelSloan)
05:55:51 hackage calamity 0.1.22.1 - A library for writing discord bots in haskell https://hackage.haskell.org/package/calamity-0.1.22.1 (nitros12)
06:00:42 <xpika> > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = (\xs -> if head xs /= [] then []:xs else xs) in foldr ($) [[]] (concatMap (\x -> if rem x 5 == 0 || rem x 3 == 0 then [break,single "fizzOrbuzz",break ] else [single (show x)]) [1..16])
06:00:45 <lambdabot> [["1","2"],["fizzOrbuzz"],["4"],["fizzOrbuzz"],["fizzOrbuzz"],["7","8"],["fi...
06:01:30 alp joins (~alp@2a01:e0a:58b:4920:85ab:9e1c:e4ae:787d)
06:02:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:02:41 conal joins (~conal@64.71.133.70)
06:03:13 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) (Quit: ZNC 1.7.5 - https://znc.in)
06:04:10 drbean joins (~drbean@TC210-63-209-156.static.apol.com.tw)
06:05:17 <jle`> iqubic: it works for ghc 8.8 :)
06:05:28 <jle`> but you're welcome to submit a pr too :)
06:05:41 <iqubic> I'm not going to do that.
06:05:47 <iqubic> I know what I'll be doing.
06:07:43 × conal quits (~conal@64.71.133.70) (Ping timeout: 260 seconds)
06:07:55 <iqubic> I'll just downgrade to 8.8. Is there any easy way to get cabal to do that?
06:08:00 actuallybatman parts (~sam@S010664777dafd303.cg.shawcable.net) ()
06:08:17 <jle`> hm, i looked at the error and it seems like it's more likely a servant version mismatch
06:08:26 <jle`> iqubic: yeah, cabal just uses whatever GHC is in your PATH
06:08:37 <iqubic> Cool. That's what I like to hear.
06:08:38 <jle`> so if you have GHC 8.8 in your path then it'll use that atuomatically
06:08:44 <glguy> You'd do: cabal configure -w ghc-8.8
06:08:45 <jle`> but it looks like the problem is probably a servant update that broke it
06:09:08 <iqubic> Now I just have to tell Nix to use GHC 8.8 instead of 8.10.2. That's not too big a deal.
06:09:17 × stree quits (~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
06:09:35 stree joins (~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net)
06:09:53 <jle`> looks like it's using servant 0.16
06:09:58 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
06:09:59 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
06:10:05 <jle`> so if you use servant 0.16.x with ghc 8.10 it should be ok too
06:10:25 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
06:10:36 <jle`> i wonder what changed
06:11:21 <iqubic> Oh, it should? Is there a way to get a particular Servant version?
06:11:37 <siraben> What should I use to derive Arbitrary instances?
06:11:46 <siraben> I have a tree and want to generate arbitrary trees for use in QuickCheck
06:11:47 <jle`> iqubic: you can specify in your cabal file or package.yaml
06:12:15 <iqubic> I'm not sure how to do that? Can you tell me what I should add to my .cabal file?
06:14:22 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
06:14:25 <jle`> 'servant ==0.16.2' where you are listing your servant dependency, i think
06:14:26 <xpika> ok question: A HTML table (without rowspans) has an equal number of fields per row. Would a list of fixed length Vectors be a good option for constructing a table like this safely?
06:15:01 <jle`> xpika: it depends on what sort of operations you'd want to do, i think. but yeah, having something like [Vector n a] would keep each row the same length
06:15:03 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
06:15:28 <iqubic> jle`: I'm not listing a servant dependency, I'm letting Cabal get that for me.
06:16:07 <jle`> ah hm. you can add that in as a dep then. but also i guess i should have made stricter upper bounds for the library D:
06:16:39 <iqubic> Are you going to update the library, or not?
06:17:09 darjeeling_ joins (~darjeelin@112.16.171.8)
06:17:49 <iqubic> Also, will your OCR library be broken too, or not.
06:17:51 Amras joins (~Amras@unaffiliated/amras)
06:17:52 <iqubic> ?
06:18:21 hughjfchen joins (81221413@129.34.20.19)
06:19:04 <ambidextrose> keep rockin' that single-quote, iqubic
06:19:17 <koz_> siraben: You can just write the instance by hand, surely?
06:19:17 ambidextrose parts (~fut-learn@mobile-166-171-122-147.mycingular.net) ()
06:19:19 <iqubic> What single quote?
06:19:35 <siraben> koz_: `arbitrary = oneof [pure Leaf, Node <$> arbitrary <*> arbitrary <*> arbitrary]`
06:19:36 <siraben> yeah
06:19:45 <koz_> siraben: That's gonna have issues.
06:19:50 <jle`> the ocr library doesn't use servant, so i think it should be fine. but i haven't tested all the bounds for all the deps
06:19:52 <koz_> Mostly because it'll possibly loop forever.
06:19:56 <siraben> koz_: why?
06:20:02 <siraben> data Tree = Node Int Tree Tree | Leaf deriving Show
06:20:13 <koz_> Because a possible path through that Arbitrary instance is 'Node for all eternity'.
06:20:16 <koz_> So it'll never stop.
06:20:38 <koz_> So you need to bound its depth, probably by using resize.
06:20:47 <koz_> (`div` 2) is a good way to do that.
06:21:04 <koz_> Every time you make a recursive call to 'arbitrary', ensure you wrap it in 'resize'.
06:21:12 hidedagger joins (~nate@unaffiliated/hidedagger)
06:21:37 <koz_> And also check for the size (by using getSize) before you recurse - if you're at 0 or lower, ensure you get a Leaf.
06:23:57 vg joins (~vg@139.59.59.230)
06:24:44 <siraben> koz_: ok
06:25:23 miuchan joins (2d880087@45.136.0.135)
06:27:10 <siraben> koz_: s <- getSize then
06:27:12 <siraben> `if s <= 0 then pure Leaf else Node <$> arbitrary <*> resize (s `div` 2) arbitrary <*> resize (s `div` 2) arbitrary`
06:27:14 <siraben> Right?
06:27:41 <koz_> Almost.
06:28:05 <koz_> In the 'else' arm, you want to use oneOf to pick between Leaf and Node.
06:28:15 <koz_> Otherwise you end up with a tree that's perfectly balanced every time.
06:28:34 adm joins (~adm@117.223.63.167)
06:28:42 <siraben> koz_: Ah, I see.
06:28:57 <siraben> How do I force shrinking of the tests to make the smallest counterexample?
06:29:35 <koz_> Did you define 'shrink'?
06:29:46 <koz_> If you didn't define the shrink method, nothing gets shrunk.
06:30:04 <siraben> Ah
06:30:20 <siraben> How do I define shrink?
06:30:36 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
06:30:38 <siraben> Oh it's in the arbitrary class
06:30:43 <koz_> Leaf is not shrinkable.
06:30:46 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
06:30:54 <koz_> Node shrinks to its subtrees.
06:31:07 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
06:31:43 <siraben> Nice, works great.
06:31:47 <siraben> `shrink Leaf = []; shrink (Node x l r) = [Leaf] ++ [l, r] ++ [Node x' l' r' | (x', l', r') <- shrink (x, l, r)]`
06:32:02 <koz_> Nah, you don't want to shrink Node to Leaf like that.
06:32:08 <koz_> It's not a shrink - you're inventing data.
06:32:24 <koz_> shrink (Node _ l r) = [l, r] is fine.
06:32:41 <siraben> Interesting, the QuickCheck docs uses this tree example
06:33:09 <iqubic> jle`: Are you going to update the AoC-API to have strict bounds, or should I just make the required modifications on my end?
06:33:11 <siraben> Hm, using that for shrink seems to produce worse results
06:33:21 <koz_> siraben: In what sense?
06:33:36 <siraben> koz_: longer counterexamples after quickCheck
06:33:40 <koz_> Hmm.
06:33:44 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
06:33:49 <koz_> Well, in that case, use your original.
06:33:56 <koz_> I guess it's a more aggressive search
06:34:08 <siraben> taking away [Leaf] ++ doesn't seem to make a difference though
06:34:10 adm joins (~adm@117.223.63.167)
06:34:32 <koz_> I always thought 'shrink' was meant to be a reduction, rather than a search.
06:34:34 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
06:34:39 <koz_> But I guess a search _would_ produce better results.
06:34:40 adm joins (~adm@117.223.63.167)
06:35:04 <siraben> I wish I could pretty print trees...
06:35:44 <koz_> siraben: Like, define a prettyprinter, pass that into (a variant of) forAll?
06:35:49 <siraben> Ah there's already Data.Trees, d'oh
06:35:53 <koz_> (there's one letting you specify the string conversion)
06:36:31 bitmagie joins (~Thunderbi@200116b806516200c8ecaee7ade9dd01.dip.versatel-1u1.de)
06:36:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
06:38:00 phaul joins (~phaul@ruby/staff/phaul)
06:39:49 × nkatte_ quits (~nkatte@2804:14c:7982:10c9:4e1d:96ff:fe53:98e1) (Quit: nkatte_)
06:40:04 × hughjfchen quits (81221413@129.34.20.19) (Ping timeout: 245 seconds)
06:40:53 <jle`> iqubic: i might be updating it to make it work with 0.18, it seems like i was just doing a small thing unsafe before
06:41:15 <iqubic> Ah. I see. It's fine if you don't update it.
06:41:46 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
06:43:23 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
06:44:31 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
06:45:59 × alp quits (~alp@2a01:e0a:58b:4920:85ab:9e1c:e4ae:787d) (Ping timeout: 272 seconds)
06:46:45 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
06:46:54 hackplan joins (~hackplan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc)
06:48:10 × hackplan quits (~hackplan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Client Quit)
06:48:12 adm joins (~adm@117.223.63.167)
06:48:19 gproto23 joins (~gproto23@unaffiliated/gproto23)
06:49:23 hackplan joins (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc)
06:49:27 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Client Quit)
06:49:49 gproto23 joins (~gproto23@unaffiliated/gproto23)
06:53:21 hackage advent-of-code-api 0.2.7.1 - Advent of Code REST API bindings and servant API https://hackage.haskell.org/package/advent-of-code-api-0.2.7.1 (jle)
06:57:26 × urek quits (~urek@2804:7f1:e10a:5ac1:9da8:e4f6:9638:96bd) (Quit: urek)
06:57:59 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
06:58:45 × kupi quits (uid212005@gateway/web/irccloud.com/x-hiccaslramtbqzdd) (Quit: Connection closed for inactivity)
06:58:46 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 272 seconds)
06:59:38 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
06:59:56 coot joins (~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
06:59:58 adm joins (~adm@117.223.63.167)
07:01:19 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
07:04:36 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
07:07:05 <iqubic> Oh, you just updated it.
07:07:11 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Ping timeout: 256 seconds)
07:07:27 <iqubic> jle`: Does this now work with 8.10.2?
07:08:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:08:59 jamm_ joins (~jamm@unaffiliated/jamm)
07:09:45 andyrtr1 joins (~andyrtr@195.140.213.38)
07:09:59 × larou quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
07:10:56 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
07:11:09 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 256 seconds)
07:13:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
07:16:16 × darjeeling_ quits (~darjeelin@112.16.171.8) (Ping timeout: 240 seconds)
07:20:24 jsomedon joins (~jsomedon@111.197.236.178)
07:20:52 <iqubic> Actually, that the wrong question. The question should be: does this now work with the latest servant API, to which the answer is "Yes"
07:21:12 × xff0x quits (~fox@2001:1a81:524c:7b00:8105:569c:1b26:2c3d) (Ping timeout: 260 seconds)
07:21:34 xff0x joins (~fox@2001:1a81:524c:7b00:4922:8a11:2fad:afb4)
07:23:07 × jsomedon quits (~jsomedon@111.197.236.178) (Client Quit)
07:23:10 × hidedagger quits (~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
07:23:19 <jle`> hooray :D
07:24:16 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 240 seconds)
07:24:18 adm joins (~adm@117.223.63.167)
07:24:33 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
07:24:35 × bitmagie quits (~Thunderbi@200116b806516200c8ecaee7ade9dd01.dip.versatel-1u1.de) (Quit: bitmagie)
07:25:22 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:25:27 alp joins (~alp@2a01:e0a:58b:4920:c928:701f:1376:41b8)
07:26:37 × electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:27:03 electricityZZZZ joins (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
07:30:58 <iqubic> I don't actually know if it works. I haven't tested it. I'm just going by what your commit messages say. I trust you to have tested the thing before releasing it.
07:31:54 petersen joins (~petersen@redhat/juhp)
07:32:03 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
07:32:06 Digit joins (~user@fsf/member/digit)
07:35:19 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:36:43 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
07:37:31 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
07:38:33 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
07:39:39 christo joins (~chris@81.96.113.213)
07:40:54 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
07:41:37 × triteraflops quits (~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 264 seconds)
07:42:34 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
07:44:17 johnw joins (~johnw@haskell/developer/johnw)
07:48:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:48:43 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
07:49:43 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
07:53:18 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
07:59:16 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
08:00:16 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
08:01:01 jamm_ joins (~jamm@unaffiliated/jamm)
08:01:16 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
08:01:32 jamm_ joins (~jamm@unaffiliated/jamm)
08:01:37 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
08:02:17 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
08:03:47 jamm_ joins (~jamm@unaffiliated/jamm)
08:05:39 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
08:06:34 vicfred joins (~vicfred@unaffiliated/vicfred)
08:07:03 × alp quits (~alp@2a01:e0a:58b:4920:c928:701f:1376:41b8) (Ping timeout: 272 seconds)
08:07:12 nek0 joins (~nek0@mail.nek0.eu)
08:07:39 × vicfred quits (~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
08:08:11 vicfred joins (~vicfred@unaffiliated/vicfred)
08:08:57 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 272 seconds)
08:09:13 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 264 seconds)
08:12:03 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
08:12:22 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:13:03 triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca)
08:16:58 christo joins (~chris@81.96.113.213)
08:17:37 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
08:22:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
08:28:35 × Amras quits (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
08:29:51 Amras joins (~Amras@unaffiliated/amras)
08:32:01 × Lord_of_Life quits (~Lord@46.217.217.219) (Changing host)
08:32:01 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
08:39:26 asheshambasta joins (~user@ptr-e1lysauiv50il654lwl.18120a2.ip6.access.telenet.be)
08:40:48 raichoo joins (~raichoo@dslb-092-073-220-084.092.073.pools.vodafone-ip.de)
08:41:15 × oxide quits (~lambda@unaffiliated/mclaren) (Ping timeout: 260 seconds)
08:41:36 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
08:41:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:42:25 alp joins (~alp@2a01:e0a:58b:4920:449d:95d8:faaa:919f)
08:43:43 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
08:45:01 × aarvar quits (~foewfoiew@50.35.43.33) (Ping timeout: 246 seconds)
08:45:26 jpds joins (~jpds@gateway/tor-sasl/jpds)
08:47:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
08:56:02 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
08:57:41 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
08:58:03 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Ping timeout: 260 seconds)
09:00:13 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
09:00:25 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
09:01:05 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-jxbrpiggxmywaele) (Quit: Connection closed for inactivity)
09:08:21 hackage ede 0.3.0.0 - Templating language with similar syntax and features to Liquid or Jinja2. https://hackage.haskell.org/package/ede-0.3.0.0 (BrendanHay)
09:14:03 shangxiao joins (~davids@101.181.159.140)
09:19:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:21:42 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c)
09:24:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
09:26:23 × livvy_ quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
09:27:13 toorevitimirp joins (~tooreviti@117.182.183.16)
09:27:50 × raichoo quits (~raichoo@dslb-092-073-220-084.092.073.pools.vodafone-ip.de) (Quit: Lost terminal)
09:28:46 em1n joins (~user@2401:4900:33a0:9423:35c5:7032:f69d:635c)
09:29:00 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
09:30:40 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
09:31:09 ddere joins (uid110888@gateway/web/irccloud.com/x-ummpgtznmkpsetvj)
09:33:56 × triteraflops quits (~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 265 seconds)
09:34:03 triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca)
09:35:11 knupfer joins (~Thunderbi@200116b82c7f88004886d9fffe889d05.dip.versatel-1u1.de)
09:35:13 × knupfer quits (~Thunderbi@200116b82c7f88004886d9fffe889d05.dip.versatel-1u1.de) (Client Quit)
09:35:28 knupfer joins (~Thunderbi@i5E86B463.versanet.de)
09:36:38 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-jbnazvtdsyymenum) (Quit: Connection closed for inactivity)
09:37:59 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
09:39:05 asheshambasta parts (~user@ptr-e1lysauiv50il654lwl.18120a2.ip6.access.telenet.be) ("ERC (IRC client for Emacs 28.0.50)")
09:40:05 × drbean quits (~drbean@TC210-63-209-156.static.apol.com.tw) (Ping timeout: 240 seconds)
09:41:24 × em1n quits (~user@2401:4900:33a0:9423:35c5:7032:f69d:635c) (Ping timeout: 240 seconds)
09:45:08 × notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 256 seconds)
09:46:12 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
09:47:07 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
09:47:25 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Client Quit)
09:47:34 notzmv joins (~user@unaffiliated/zmv)
09:49:44 × benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 2.9)
09:49:59 benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
09:50:04 LKoen joins (~LKoen@169.244.88.92.rev.sfr.net)
09:50:28 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 246 seconds)
09:55:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:00:21 × benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0)
10:00:38 benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
10:01:03 rprije joins (~rprije@14-202-129-120.static.tpgi.com.au)
10:04:29 Rudd0 joins (~Rudd0@185.189.115.108)
10:05:05 darjeeling_ joins (~darjeelin@122.245.217.23)
10:14:21 × alp quits (~alp@2a01:e0a:58b:4920:449d:95d8:faaa:919f) (Ping timeout: 272 seconds)
10:14:21 hackage implicit-hie 0.1.2.5 - Auto generate hie-bios cradles & hie.yaml https://hackage.haskell.org/package/implicit-hie-0.1.2.5 (Avi_Dessauer)
10:15:44 × miuchan quits (2d880087@45.136.0.135) (Remote host closed the connection)
10:16:12 × acidjnk_new quits (~acidjnk@p200300d0c719ff597d005cd8d9846e4e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:18:39 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
10:20:26 × hackplan quits (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Ping timeout: 264 seconds)
10:21:34 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
10:22:59 × marek quits (~mmahut@209.250.249.245) (Ping timeout: 260 seconds)
10:23:26 marek joins (~mmahut@209.250.249.245)
10:23:43 hackplan joins (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc)
10:29:08 × benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0)
10:29:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:29:24 benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
10:29:35 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
10:33:01 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
10:33:31 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
10:34:03 oish joins (~charlie@228.25.169.217.in-addr.arpa)
10:36:38 × hexfive quits (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
10:36:52 conal joins (~conal@64.71.133.70)
10:36:54 × conal quits (~conal@64.71.133.70) (Client Quit)
10:38:00 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
10:43:39 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
10:44:27 fendor joins (~fendor@178.115.128.128.wireless.dyn.drei.com)
10:45:46 alp joins (~alp@2a01:e0a:58b:4920:89fd:4813:7f86:5e18)
10:47:43 × vg quits (~vg@139.59.59.230) (Ping timeout: 260 seconds)
10:55:19 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
10:55:26 Varis joins (~Tadas@unaffiliated/varis)
10:56:39 adm joins (~adm@117.223.63.167)
10:59:01 wei2912 joins (~wei2912@unaffiliated/wei2912)
10:59:29 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
10:59:35 joaj joins (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca)
11:01:20 × adm quits (~adm@117.223.63.167) (Ping timeout: 272 seconds)
11:03:04 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:03:16 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
11:04:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:07:02 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 272 seconds)
11:09:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:09:51 phaul joins (~phaul@ruby/staff/phaul)
11:10:05 × alp quits (~alp@2a01:e0a:58b:4920:89fd:4813:7f86:5e18) (Ping timeout: 272 seconds)
11:10:45 sh9 joins (~sh9@softbank060116136158.bbtec.net)
11:14:03 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
11:15:14 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
11:15:46 phaul joins (~phaul@ruby/staff/phaul)
11:21:25 × marek quits (~mmahut@209.250.249.245) (Ping timeout: 240 seconds)
11:21:29 × benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 272 seconds)
11:21:37 marek joins (~mmahut@209.250.249.245)
11:25:20 joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net)
11:26:04 × hackplan quits (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Ping timeout: 240 seconds)
11:26:40 × tolt quits (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
11:26:50 alp joins (~alp@2a01:e0a:58b:4920:e556:aa6f:40c2:461e)
11:26:58 jamm_ joins (~jamm@unaffiliated/jamm)
11:30:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:30:36 tolt joins (~weechat-h@li219-154.members.linode.com)
11:31:50 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
11:33:36 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
11:35:48 f-a joins (~f-a@151.68.155.243)
11:37:16 × theorbtwo quits (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) (Ping timeout: 256 seconds)
11:39:34 × joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection)
11:40:07 joaoh82 joins (~joaoh82@157-131-134-210.dedicated.static.sonic.net)
11:40:36 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
11:41:10 hackplan joins (~miuchan@2408:8221:4b1e:80d0:1c28:9d6f:fae6:d558)
11:41:48 × rprije quits (~rprije@14-202-129-120.static.tpgi.com.au) (Ping timeout: 256 seconds)
11:42:02 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c)
11:43:26 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
11:43:43 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
11:44:39 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
11:45:25 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
11:45:44 phaul joins (~phaul@ruby/staff/phaul)
11:45:47 × joaoh82 quits (~joaoh82@157-131-134-210.dedicated.static.sonic.net) ()
11:45:57 oish joins (~charlie@228.25.169.217.in-addr.arpa)
11:45:59 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
11:46:33 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
11:46:36 sh91 joins (~sh9@softbank060116136158.bbtec.net)
11:46:46 vg_ joins (~vg@139.59.59.230)
11:46:52 × vg_ quits (~vg@139.59.59.230) (Remote host closed the connection)
11:47:01 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 246 seconds)
11:47:16 vg_ joins (~vg@139.59.59.230)
11:47:25 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 240 seconds)
11:48:54 × vg_ quits (~vg@139.59.59.230) (Client Quit)
11:52:31 × wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds)
11:54:46 __monty__ joins (~toonn@unaffiliated/toonn)
11:54:51 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
11:56:15 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
11:56:56 petersen joins (~petersen@redhat/juhp)
12:00:12 adm joins (~adm@117.223.63.167)
12:04:11 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Quit: Leaving)
12:04:36 × adm quits (~adm@117.223.63.167) (Ping timeout: 240 seconds)
12:05:03 JJ15 joins (~JJ@94.197.17.236.threembb.co.uk)
12:05:11 × darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 260 seconds)
12:05:18 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
12:05:25 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
12:06:10 Iolen joins (~Iolen@82.131.38.59.cable.starman.ee)
12:07:04 darjeeling_ joins (~darjeelin@122.245.217.23)
12:07:15 <Iolen> ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ Hello ..... ░▓░▓░▓░▓░▓░▓░▓░▓░▓░
12:07:40 × lpy quits (~nyd@unaffiliated/elysian) (Quit: lpy)
12:08:13 muzzle joins (~user@2001:a62:1506:3101:844e:2920:a6de:5dd4)
12:10:43 × muzzle quits (~user@2001:a62:1506:3101:844e:2920:a6de:5dd4) (Remote host closed the connection)
12:10:47 vg_ joins (~vg@139.59.59.230)
12:10:49 × vg_ quits (~vg@139.59.59.230) (Remote host closed the connection)
12:11:32 pavonia joins (~user@unaffiliated/siracusa)
12:12:38 <Iolen> ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ Everyone invited to new chat place at: http://iaaaaa.mywebcommunity.org/
12:12:38 <Iolen> Thank You for attention ! ░▓░▓░▓░▓░▓░▓░▓░▓░▓░
12:14:07 <__monty__> ,where mods
12:14:54 <__monty__> @ops
12:14:54 <lambdabot> Maybe you meant: pl oeis docs
12:15:31 <__monty__> Anyone remember the correct command?
12:15:34 <__monty__> @where ops
12:15:34 <lambdabot> byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski
12:15:42 <__monty__> Success \o/
12:15:49 <siraben> it's a bot, spammed multiple channels
12:16:06 <f-a> yup, multiple people reporting on #freenode
12:16:30 <dcoutts> hmm, I don't seem to have my op rights
12:16:55 Ariakenom joins (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
12:17:45 <__monty__> dcoutts: You can always have chanserv op you if you have the correct flags.
12:19:12 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
12:21:03 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 260 seconds)
12:23:46 petersen joins (~petersen@redhat/juhp)
12:24:10 m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
12:24:48 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
12:26:05 × awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds)
12:26:06 drbean joins (~drbean@TC210-63-209-81.static.apol.com.tw)
12:27:08 × dcoutts quits (~duncan@33.14.75.194.dyn.plus.net) (Quit: Leaving)
12:27:23 dcoutts joins (~dcoutts@33.14.75.194.dyn.plus.net)
12:27:23 × dcoutts quits (~dcoutts@33.14.75.194.dyn.plus.net) (Changing host)
12:27:23 dcoutts joins (~dcoutts@unaffiliated/dcoutts)
12:27:50 ChanServ sets mode +o dcoutts
12:27:54 <dcoutts> yay
12:28:04 Iolen is kicked by dcoutts (Iolen)
12:28:08 ChanServ sets mode -o dcoutts
12:30:20 ggole joins (~ggole@2001:8003:8119:7200:69c3:3fe:81:8dbf)
12:33:45 × jzl quits (~jzl@unaffiliated/jzl) (Remote host closed the connection)
12:33:56 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
12:34:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
12:36:52 hackage ede 0.3.1.0 - Templating language with similar syntax and features to Liquid or Jinja2. https://hackage.haskell.org/package/ede-0.3.1.0 (BrendanHay)
12:39:50 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
12:40:05 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
12:40:22 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
12:42:33 × alp quits (~alp@2a01:e0a:58b:4920:e556:aa6f:40c2:461e) (Ping timeout: 272 seconds)
12:49:25 avdb joins (~avdb@ip-81-11-215-86.dsl.scarlet.be)
12:49:59 <avdb> Am I allowed to ask people to make my spaghetti code better? I wrote a small program but there's a lot of repetition and I don't know how to make it shorter ...
12:50:27 × darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 260 seconds)
12:51:07 <f-a> avdb: sure, but maybe run hlint first
12:51:31 <avdb> I use ALE but it doesn't detect anything
12:51:34 <avdb> http://codepad.org/nIz9DRYA
12:51:56 <avdb> ALE is a collection of linters including hlint right?
12:52:39 <f-a> no idea what ALE is to be honest
12:53:04 <avdb> https://github.com/dense-analysis/ale
12:53:53 contiver joins (~contiver@84-115-65-38.wifi.dynamic.surfer.at)
12:54:12 <f-a> ok
12:54:30 <f-a> instead of guards, why not pattern match?
12:54:34 iqubic` joins (~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a)
12:54:58 <f-a> also is `seconds` really a parameter?
12:54:58 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
12:55:12 <f-a> *really needed
12:55:16 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
12:55:18 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
12:55:35 <avdb> It's indeed probably possible to make it point-free
12:55:51 <avdb> Can I add the numbers to the data types instead of the function?
12:56:10 <f-a> of course
12:56:40 <avdb> Wasn't sure if pattern matching would work, just `ageOn Mars = undefined`?
12:56:56 <avdb> If I do that I'm still writing out the function multiple times
12:57:04 <f-a> data Plantet = PlanetTag Float and data PlanetTag = Mars | …
12:57:33 <f-a> pattern matching would work, yeah
12:57:41 <avdb> Wait let me first fix the pattern matching
12:58:01 <f-a> what does ageOn computes, exactly?
12:58:50 × iqubic quits (~user@2601:602:9500:4870:71ac:d28d:5123:4cbd) (Ping timeout: 264 seconds)
12:59:05 <f-a> (to rephrase, why `ageOn :: Planet -> Float -> Float` instead of `ageOn :: Planet -> Float`)
13:01:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:05:32 <avdb> "Given an age in seconds, calculate how old someone would be on the following planets"
13:05:58 <f-a> oh, now I see
13:06:02 <avdb> No idea, I'm on Exercism and they recommended to use "ageOn :: Planet -> Float -> Float"
13:06:14 <f-a> ok
13:06:23 <avdb> You need to first calculate someone's age on earth and convert it to the other planets if necessary
13:07:03 darjeeling_ joins (~darjeelin@122.245.217.23)
13:07:09 <f-a> I would probably write
13:07:28 <f-a> where earthAge = seconds * 3155760
13:07:44 <f-a> and put `earthAge` in planet == Earth = earthAge rather
13:08:20 adm joins (~adm@117.223.63.167)
13:08:27 <avdb> I can't make it point-free by the way
13:08:30 <avdb> I don't know why
13:08:34 <avdb> This is what I currently have
13:08:37 awk joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
13:08:39 <f-a> do you *need* to make it pointfree?
13:08:59 <avdb> http://codepad.org/OTevDnrJ
13:09:10 <avdb> I don't need to I just want it to be shorter
13:09:17 × contiver quits (~contiver@84-115-65-38.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
13:10:02 <avdb> Do where bindings work with pattern matching?
13:10:48 <f-a> why `(*) 0.2408467 $ ageOn Earth`
13:11:00 <f-a> instead of `0.24 * ageOn Earth`?
13:11:44 <f-a> and no, where spans over guards but not patterns. But you can be crafty like this
13:12:06 <avdb> So I can't pattern match anymore?
13:12:16 <avdb> If I use where
13:12:16 <f-a> you can with a case … of
13:12:18 <f-a> one second
13:14:13 <f-a> http://www.ariis.it/link/t/paste21061-0 there, something like this
13:14:28 <f-a> emh, bar the typos
13:14:47 alp joins (~alp@2a01:e0a:58b:4920:3b:6ea2:53ef:78a2)
13:15:47 × andyrtr1 quits (~andyrtr@195.140.213.38) (Remote host closed the connection)
13:16:21 <avdb> Is that the *best* possible solution?
13:17:39 <f-a> it is clear, it is not redundant. You *have* to write those 84.016846 numbers down somewhere in your program, whether inside a function or in a helper function or in a datatype
13:18:03 <avdb> There is improvement so I will stick with your solution, in real projects it's probably better to work with a database for such stuff
13:18:07 <avdb> Right?
13:18:40 <f-a> you can have an helper function like
13:18:40 delbmuts_ joins (52874ce6@ppp-82-135-76-230.dynamic.mnet-online.de)
13:18:41 <f-a> factor :: Planet -> Float
13:18:41 <f-a> factor Mercury = 13
13:18:44 <f-a>
13:19:21 <f-a> and then ageOn becomes
13:19:22 <f-a> ageOn p a = let ageEarth = a * 2 in ageEarth * factor p
13:19:24 <avdb> You mean to make it easier to separate data from the function?
13:19:43 <avdb> That's even better imo
13:19:57 <f-a> or even use an assoc list. My point is, *somewhere* the data has to be written
13:20:04 <avdb> assoc?
13:20:07 <avdb> Never heard of that before
13:20:16 <f-a> sorry, it is just a
13:20:30 <f-a> [(Pluto, 18), (Earth, 1) …] list
13:20:49 × ddere quits (uid110888@gateway/web/irccloud.com/x-ummpgtznmkpsetvj) (Quit: Connection closed for inactivity)
13:20:53 <avdb> Oh yea exactly what I first thought when I started the exercise, it's just that I'm bad with ADT :P
13:21:09 <f-a> but it was just a thought, the helper function is better (GHC can warn you if you miss a constructor, etc.)
13:21:53 <f-a> just relax and remember that one of the strong points of Haskell is easy refactoring
13:22:14 <f-a> if you come up later with a more elegant solution, you can refactor easily thanks to types, inference
13:23:43 × alp quits (~alp@2a01:e0a:58b:4920:3b:6ea2:53ef:78a2) (Ping timeout: 272 seconds)
13:24:14 f-a_ joins (~f-a@151.82.219.112)
13:26:01 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:26:16 × f-a quits (~f-a@151.68.155.243) (Ping timeout: 240 seconds)
13:26:28 × f-a_ quits (~f-a@151.82.219.112) (Client Quit)
13:28:07 christo joins (~chris@81.96.113.213)
13:30:24 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
13:30:25 <avdb> Alright, I just used a factor helper function and it looks much better now since it's a one line function
13:30:56 <avdb> I installed GHC and Cabal with ghcup, any idea how I can install Stack?
13:30:56 × gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
13:31:18 gentauro joins (~gentauro@unaffiliated/gentauro)
13:31:37 <Sose> avdb: I've installed ghc and cabal with ghcup and just used Stack's own install script for Stack and everything seems to work fine
13:33:42 × zaquest quits (~notzaques@5.128.210.178) (Read error: Connection reset by peer)
13:33:43 <avdb> Sose: Thanks, but can Stack update itself?>
13:33:56 × awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds)
13:34:02 urodna joins (~urodna@unaffiliated/urodna)
13:34:15 zaquest joins (~notzaques@5.128.210.178)
13:34:16 <Sose> I think it can with `stack upgrade`
13:34:35 <Sose> pretty new to haskell myself and I just installed everything recently so I haven't had the need to upgrade much :)
13:34:35 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
13:35:03 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
13:35:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
13:38:47 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
13:42:08 × drbean quits (~drbean@TC210-63-209-81.static.apol.com.tw) (Ping timeout: 260 seconds)
13:42:37 × z0k quits (~user@101.50.127.33) (Quit: WeeChat 3.0)
13:44:53 × HarveyPwca quits (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
13:46:53 × rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
13:47:01 vg joins (~vg@139.59.59.230)
13:47:09 rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
13:47:13 × vg quits (~vg@139.59.59.230) (Remote host closed the connection)
13:47:28 vg joins (~vg@139.59.59.230)
13:47:30 urek joins (~urek@2804:7f1:e10a:5ac1:558c:16f8:858a:ffa6)
13:49:50 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
13:51:24 × rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
13:51:40 rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
13:52:22 <delbmuts_> Hi again, is there a function "Reader Int a -> (ResourceT IO) a"? I'd like to get rid of the "undefined" in https://paste.debian.net/hidden/2b257950 but don't know how. Thanks.
13:54:05 × darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 240 seconds)
13:56:48 <frdg> `toHtml :: blaze-markup-0.8.2.5:Text.Blaze.ToMarkup a => a -> Html` What is the best way to go about finding a type that satisfies this constraint? Is there something like `:type` in ghci where I can enter a constraint and get back Types that satisfy it?
13:57:14 <dminuoso> delbmuts_: That looks like a strange thing to do.
13:57:25 <dminuoso> delbmuts_: What's the intention?
13:57:47 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
13:58:14 <ski> delbmuts_> :t transPipe
13:58:34 <dminuoso> Also, your binding `server = ws` shouldn't check, right?
13:59:10 christo joins (~chris@81.96.113.213)
13:59:52 <delbmuts_> dminuoso: I'd like to access my custom servant `State` in the WebSocket function.
14:00:20 <dminuoso> so far so good.
14:00:21 <delbmuts_> dminuoso: AFAICT ghc isn't complaining.
14:01:10 <dminuoso> ah hold on, ServerT is a tyfam right
14:03:12 <dminuoso> type ServerT (WebSocketConduit i o) m = ConduitT i o (ResourceT IO) ()
14:03:14 <dminuoso> I see
14:03:16 <delbmuts_> ski: transPipe :: Monad m => (forall a. m a -> n a) -> ConduitT i o m r -> ConduitT i o n r -- https://hackage.haskell.org/package/conduit-1.3.4/docs/Data-Conduit.html#v:transPipe
14:03:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:05:54 Deide joins (~Deide@217.155.19.23)
14:06:36 <delbmuts_> The fact that `m` does not appear on the right side bugs me a little.
14:06:45 <dminuoso> delbmuts_: Why not just add ResourceT to your AppM?
14:06:59 <dminuoso> Then you can just use transPipe the same way as hoistServer
14:08:10 <delbmuts_> Around or inside the ReaderT? (Would that matter?) I think I tried it, but I'll try again. :)
14:08:18 <dminuoso> I guess your main mistake is presuming that there's no ResourceT in your version of conduit
14:08:22 darjeeling_ joins (~darjeelin@122.245.217.23)
14:08:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
14:08:57 <dminuoso> (I mean it seems like you're trying to throw away your MonadResource interface for no good reason)
14:09:24 <dminuoso> Well, so servant-websockets assumes your monad to be
14:09:28 <dminuoso> ConduitT i o (ResourceT IO) ()
14:10:02 <dminuoso> You get to provide a natural transformation `m ~> n`, with n ~ ResourceT IO, so it must be:
14:10:10 <dminuoso> m ~> ResourceT IO
14:10:12 <dminuoso> If you had
14:10:37 <dminuoso> yourPipe :: ReaderT State (ResourceT IO) ()
14:11:12 <dminuoso> Then you could trivially write `ReaderT State (ResourceT IO) ~> ResourceT IO` with just `flip runReaderT ($)`
14:11:41 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
14:12:20 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
14:12:29 × vg quits (~vg@139.59.59.230) (Quit: vg)
14:12:57 vg joins (~vg@139.59.59.230)
14:13:00 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
14:13:01 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
14:14:13 contiver joins (~contiver@84-115-64-11.wifi.dynamic.surfer.at)
14:14:36 <delbmuts_> dminuoso: I'll need some time to digest that. Thank you! :)
14:15:20 berberman joins (~berberman@unaffiliated/berberman)
14:15:39 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
14:16:03 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
14:16:51 hackage hnix-store-core 0.3.0.0 - Core effects for interacting with the Nix store. https://hackage.haskell.org/package/hnix-store-core-0.3.0.0 (imalsogreg)
14:18:07 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
14:20:50 <avdb> Sorry if this is a stupid question, but what's the best resource to understand Monads? I read the Haskell Wiki article on how it works and checked Computerphile's video on it but I don't think I fully get it yet.
14:22:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
14:23:31 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Ping timeout: 256 seconds)
14:23:44 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
14:26:31 <ski> delbmuts_ : `transPipe trans' can't possibly work, with that signature of `trans'
14:27:08 <[exa]> avdb: you actually hit the most problematic problem of monads, explaining them is problematic. it's only going to be better now. :D
14:27:23 <[exa]> avdb: anyway, what did you try so far
14:27:25 <ski> oh, actually, it can .. sorry, i misread
14:27:51 hackage hnix-store-core 0.3.0.1 - Core effects for interacting with the Nix store. https://hackage.haskell.org/package/hnix-store-core-0.3.0.1 (imalsogreg)
14:28:10 erisco joins (~erisco@d24-57-249-233.home.cgocable.net)
14:30:22 <[exa]> avdb: one thing that helps (with practical intuition) is to checkout the "monad DSLs" like IO. Get how the `IO ()` in types work, try to explain the differences between say "map vs mapM" and "if vs when" etc, and looking how the thing is constructed from >>= and >> using the 'do' notation.
14:31:20 hackage hnix-store-remote 0.3.0.0 - Remote hnix store https://hackage.haskell.org/package/hnix-store-remote-0.3.0.0 (srk)
14:32:24 <[exa]> avdb: and then there's the technical path, going from Functor (and fmap) to Applicative (with pure + <*>), where the jump to Monad (with >>=) becomes quite natural
14:32:25 awk joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
14:33:56 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds)
14:34:40 <Sose> avdb: I'm at the point where I'm starting to slowly "get them"... reading about monads didn't really help me at all in the beginning. it was doing exercises and writing functor/applicative/monad instances and using them that started the process of having some understanding of them. I don't know what's the general opinion on http://mightybyte.github.io/monad-challenges/ as a resource but I found it quite enlightening
14:34:40 <Sose> personally. no reading, just code exercises and some tips to guide you.. after doing those reading about monads makes more sense also
14:37:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:37:42 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
14:38:15 × contiver quits (~contiver@84-115-64-11.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
14:38:51 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:39:18 × darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 260 seconds)
14:40:14 Cotillion joins (~Cotillion@185.163.110.116)
14:40:52 <avdb> [exa]: I found a blog that used pictures to explain Functors (Maybe, Just, Nothing, etc.) a while ago, but stopped because I thought they had nothing to do with monads
14:40:58 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 246 seconds)
14:41:26 <avdb> Sose: After that I tried a tutorial that constructed Monad but the code was outdated :(
14:42:13 ambidextrose joins (~fut-learn@mobile-166-171-122-170.mycingular.net)
14:42:58 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
14:43:24 da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.161.165)
14:43:38 sondr3 joins (~sondr3@cm-84.211.56.132.getinternet.no)
14:44:57 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
14:49:18 <ambidextrose> what's the best haskell book to read for someone who really does not understand all the type system notation?
14:50:12 <avdb> ambidextrose: I'm currently reading "Haskell: Programming from first principles" ...
14:50:40 <avdb> I tried "Real World Haskell" as well but it was a disaster since it throws you directly into the pool without warning
14:50:41 <erisco> if you literally just want to know about the notation there is the haskell report 2010 and the ghc user guide
14:50:44 <ambidextrose> avdb, i looked at that one, it seemed good
14:50:54 <ambidextrose> erisco, i might try those two
14:51:23 geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com)
14:52:38 × LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection)
14:52:41 <sondr3> We used Programming in Haskell for our FP course at Uni (https://www.cs.nott.ac.uk/~pszgmh/pih.html), and I really enjoyed it. One of my favorite programming books
14:52:57 darjeeling_ joins (~darjeelin@115.215.41.204)
14:52:58 <ski> PIH is often recommended/lauded in here
14:53:06 × vg quits (~vg@139.59.59.230) (Quit: vg)
14:53:15 <sondr3> Short and to the point, builds up gradually and has tons of exercises that really help you grasp concepts
14:53:21 <sondr3> I can imagine :)
14:53:22 vg joins (~vg@139.59.59.230)
14:53:34 × vg quits (~vg@139.59.59.230) (Remote host closed the connection)
14:53:47 vg joins (~vg@139.59.59.230)
14:54:24 <tomjaguarpaw> Is there a version of trace that doesn't update its thunk once it is evaluated? I would like to use such a thing to probe properties of various containers.
14:55:04 <avdb> sondr3: Is that the university of Computerphile?
14:55:19 <ambidextrose> sondr3, i might look at that one too
14:55:36 <Uniaika> tomjaguarpaw: not that I know of
14:55:50 <sondr3> avdb: Yeah, the author of the book is in quite a few of their videos
14:56:00 ambidextrose wishes he'd done his research project in 2015 in haskell and not python
14:56:10 <tomjaguarpaw> ambidextrose: Don't we all?
14:56:41 <ambidextrose> i've been trying to learn haskell for 10 years just by reading other peoples' code from time to time and enough is enough. i've seen what the RTS can do, it's pretty insane
14:56:52 <ambidextrose> i'm going to stop writing in anything else
14:58:43 <ambidextrose> also decided to try switching to archlinux since my research system had a virus in systemd
14:59:10 <sondr3> That's a new one, fair warning; Haskell on Arch is somewhat painful
14:59:16 <geekosaur> arch + haskell = pain though; at least, avoid arch's haskell packages
14:59:21 × ziman quits (~ziman@c25-5.condornet.sk) (Ping timeout: 272 seconds)
14:59:23 <ambidextrose> i think i'm going to switch to something that uses sysvinit... i can't understand the attitude of arch users
14:59:39 <ambidextrose> systemd is awful: every ubuntu i have has viruses in systemd
14:59:52 × JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 246 seconds)
15:00:00 <sondr3> Void Linux was really nice when I used it but NixOS is awesome
15:00:17 <ambidextrose> everyone's using nix but tbh i think the idea skirts the real issue of package management and language design
15:00:49 <ambidextrose> something like hoogle/agda could be checking/proving/downloading types instead of cabal, hackage, or nix
15:01:01 <ambidextrose> the type system could do the work of package management
15:01:39 <sondr3> No idea how a type system would be able to do dependency resolution :P
15:02:25 × maerwald quits (~maerwald@mail.hasufell.de) (Quit: gone)
15:04:19 × da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:04:34 <sondr3> Unrelatec, I'm parsing different kinds of numbers with megaparsec, is there a way to do this `(try (lexeme pComplex) <|> try (lexeme pRational) <|> try (lexeme pDouble) <|> try (lexeme integer)` with less repetition?
15:04:53 × knupfer quits (~Thunderbi@i5E86B463.versanet.de) (Ping timeout: 256 seconds)
15:05:03 maerwald joins (~maerwald@5.45.98.221)
15:05:10 <ambidextrose> sondr3, the types are the dependencies
15:05:20 da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.161.165)
15:06:06 × da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.161.165) (Client Quit)
15:06:18 <xerox_> :t asum
15:06:20 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
15:07:21 hackage urbit-api 0.2.0.0 - Talk to Urbit from Haskell https://hackage.haskell.org/package/urbit-api-0.2.0.0 (bsima)
15:08:19 <xerox_> asum . map (try . lexeme)
15:08:34 Entertainment joins (~entertain@104.246.132.210)
15:08:52 Chi1thangoo joins (~Chi1thang@87.112.60.168)
15:11:05 <sondr3> xerox_: thanks, much better
15:11:19 <xerox_> 👍
15:11:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
15:12:25 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
15:14:19 × Entertainment quits (~entertain@104.246.132.210) ()
15:16:49 adm joins (~adm@117.223.63.167)
15:17:08 × ambidextrose quits (~fut-learn@mobile-166-171-122-170.mycingular.net) (Quit: leaving)
15:18:13 × Wamanuz quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection)
15:18:41 <[exa]> avdb: oh well, the functor hierarchy... technically "Functors" are kindof overloaded containers ("boxes") that have a clearly defined way of transforming the elements inside, with `fmap`. (e.g. list is a functor, using normal `map`). Then you add functionality -- Applicative allows you to reasonably merge a box of functions with a box of parameters (to get a box of results). Monads additionally allow
15:18:47 <[exa]> fusing boxes with functions that produce more boxes from their contents. Demonstration:
15:23:20 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
15:24:21 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 265 seconds)
15:24:57 oats is now known as grogu
15:25:48 <[exa]> (I'm writing a gist, decided that I'm telling this to so many people that gist shall help)
15:26:27 <avdb> How do I match calling a function without arguments with guards?
15:26:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:27:06 <Rembane> avdb: f | ... = ...
15:27:09 <avdb> i.e. if I have foobar x and somebody calls foobar without arguments I want to return something
15:27:16 <Rembane> avdb: foobar x | ... = ...
15:27:24 urek__ joins (~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898)
15:27:26 <Rembane> avdb: Wait a minute, without arguments?
15:27:26 <avdb> Rembane: Three dots?
15:27:29 <avdb> Yes
15:27:36 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 240 seconds)
15:27:36 <Rembane> avdb: Why would they do that? And what's the type of x?
15:27:43 <avdb> [Char]
15:28:01 <Rembane> avdb: They can give you the empty string as argument.
15:28:08 <avdb> null x didn't work
15:28:22 <Rembane> avdb: foobar "" = error "You have given me the empty string."
15:28:33 <avdb> Oh wait I see why
15:28:36 <avdb> Nvm
15:28:40 <Rembane> No worries, good luck!
15:28:47 <geekosaur> avdb, you can't do that trivially. There's a typeclass hack that can sort of do it, but you're trying to defeat partial application which is deeply baked into Haskell
15:29:07 × urek quits (~urek@2804:7f1:e10a:5ac1:558c:16f8:858a:ffa6) (Ping timeout: 272 seconds)
15:29:39 <merijn> hmm
15:29:52 <merijn> Publishing new docs to Hackage doesn't seem to override the current ones?
15:31:52 grogu is now known as oats
15:32:29 contiver joins (~contiver@84-115-64-36.wifi.dynamic.surfer.at)
15:33:58 <erisco> my string is empty; my stack has overflow'n; my core has been dumped
15:36:19 <avdb> geekosaur: Nevermind, the problem is with running last x on an empty list, is there a safer alternative function?
15:38:02 <hpc> not really - the best you can do is do something that doesn't require getting the last element of a list
15:38:28 <hpc> or write something that's [a] -> Maybe a
15:38:37 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
15:38:54 <hpc> (and then still have to figure out what to do with Nothing)
15:42:36 <avdb> Sigh, fixed it by reordering the guards instead of making my fuctions safer.
15:42:55 LKoen joins (~LKoen@169.244.88.92.rev.sfr.net)
15:43:07 Tario joins (~Tario@201.192.165.173)
15:43:22 <erisco> > let f = getLast . foldMap (Last . Just) in (f [1,2,3], f [])
15:43:25 <lambdabot> (Just 3,Nothing)
15:43:31 <erisco> I am sure there is some lens shenanigans
15:44:06 × vg quits (~vg@139.59.59.230) (Quit: vg)
15:44:20 vg joins (~vg@139.59.59.230)
15:44:28 <erisco> avdb, imo that is the wrong kind of safeness
15:44:36 × vg quits (~vg@139.59.59.230) (Remote host closed the connection)
15:44:50 vg joins (~vg@139.59.59.230)
15:44:52 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
15:45:10 <erisco> there is a sort of security safeness of what happens if there is a bug in the program
15:45:27 <avdb> erisco: Wdym? I'm currently trying to test my work with stack but every time I run "stack test" in a different folder it starts installing ghc-tinfo6
15:45:30 <erisco> but that is already taken care of
15:46:02 <avdb> erisco: It's actually the base case, testing if the string was empty before proceeding, so that I can't run into problems with last
15:46:43 <erisco> > let f = alaf Last foldMap Just in (f [1,2,3], f [])
15:46:45 <lambdabot> (Just 3,Nothing)
15:47:18 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
15:47:19 <avdb> What?
15:47:50 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
15:48:47 <merijn> :t Last
15:48:49 <lambdabot> Maybe a -> Last a
15:48:49 <erisco> I made some inferences of what you meant by "make my functions safer"... perhaps too much of a leap
15:49:05 <merijn> erisco: Seems less confusing to avoid alaf :p
15:49:13 <merijn> :t foldMap (Last . Just)
15:49:15 <lambdabot> Foldable t => t a -> Last a
15:49:24 <merijn> > foldMap (Last . Just) []
15:49:27 <lambdabot> Last {getLast = Nothing}
15:49:31 <avdb> I can't use Functors yet
15:49:33 <erisco> I am pointing out that "safety" from a memory security standpoint is already a nonissue here
15:49:34 <merijn> > foldMap (Last . Just) [1..5]
15:49:36 <lambdabot> Last {getLast = Just 5}
15:50:26 × wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 264 seconds)
15:50:27 <erisco> and if the point is to be arbitrarily defined for empty lists regardless of whether it makes sense or not, that isn't really an admirable notion either, in my opinion
15:51:14 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Client Quit)
15:51:20 <erisco> avdb, no functors required… my first example uses Foldable and the second uses Foldable dressed up with lens
15:52:12 <erisco> > foldMap f [a,b,c]
15:52:14 <lambdabot> error:
15:52:14 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M195412351796...
15:52:14 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
15:52:40 <erisco> hm, well anyways you can think of it as f a <> f b <> f c
15:53:09 <erisco> then you just have to figure what Monoid can give you the result you're after, in this case Last
15:53:57 <erisco> > foldMap f [a,b,c] :: Expr
15:54:00 <lambdabot> f a <> f b <> f c <> mempty
15:54:15 jamm_ joins (~jamm@unaffiliated/jamm)
15:55:29 sorki joins (~sorki@gateway/tor-sasl/sorki)
15:56:21 hackage xcffib 0.11.1 - A cffi-based python binding for X https://hackage.haskell.org/package/xcffib-0.11.1 (TychoAndersen)
15:56:24 × sorki quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
15:57:39 <erisco> can also go through Alternative
15:58:23 sorki joins (~sorki@gateway/tor-sasl/sorki)
15:58:51 <erisco> > let f = foldr (flip(<|>).pure) empty in [f [1,2,3], f []] :: [Maybe Int]
15:58:53 <lambdabot> [Just 3,Nothing]
15:58:57 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
15:59:10 <erisco> > let f = foldl (flip((<|>).pure)) empty in [f [1,2,3], f []] :: [Maybe Int]
15:59:12 <lambdabot> [Just 3,Nothing]
16:00:43 <erisco> not sure what the cuter formulations of that are
16:01:21 boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
16:02:18 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
16:02:31 <fendor> If I want to show some students how to write a rest service, which library is a good start? I would currently just go with servant and the servant cookbook, as I think the latter is a really helpful resource
16:02:33 <boxscape> hmm `(forall a . P a -> Q a, forall a . Q a -> P a)` is equivalent to `forall a . (P a -> Q a, Q a -> P a)`, right?
16:02:50 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
16:03:28 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:04:42 ziman joins (~ziman@c25-5.condornet.sk)
16:05:06 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
16:05:12 <maerwald> fendor: I don't think servant is a good start
16:05:37 <maerwald> if those aren't advanced haskellers at least
16:05:46 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:06:18 <fendor> two months course so far. So, no, they are not
16:06:29 <maerwald> then I'd pick snap or scotty
16:07:02 <fendor> snap really confuses me... I always found servant to be simpler than snap, as you can just copy examples
16:07:15 <fendor> scotty seems like a great idea though
16:08:25 IamfromSpace joins (617897dd@97-120-151-221.ptld.qwest.net)
16:09:46 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds)
16:11:02 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
16:15:17 kupi joins (uid212005@gateway/web/irccloud.com/x-fqbnyydqsnaerben)
16:15:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:15:31 colby joins (~colby@cpe-24-208-40-120.new.res.rr.com)
16:15:37 colby is now known as cjenn
16:16:06 × contiver quits (~contiver@84-115-64-36.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds)
16:16:33 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
16:18:23 Tario joins (~Tario@201.192.165.173)
16:18:31 <tomjaguarpaw> Is there a version of $! that is infixl 9, so it more closely matches function application?
16:24:33 <boxscape> this seems kind of weird http://ix.io/2FWN
16:24:34 <boxscape> to be fair it's using ImpredicativeTypes, for all I know it might be different with quick look impredicativity
16:25:09 <boxscape> or maybe it actually makes perfect sense if you think about it, I'm not really sure yet
16:25:31 × IamfromSpace quits (617897dd@97-120-151-221.ptld.qwest.net) (Remote host closed the connection)
16:26:11 solonarv joins (~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr)
16:29:22 × vg quits (~vg@139.59.59.230) (Quit: vg)
16:29:46 vg joins (~vg@139.59.59.230)
16:31:05 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
16:31:32 × sorki quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
16:32:04 JJ15 joins (~JJ@94.197.17.236.threembb.co.uk)
16:33:15 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Client Quit)
16:33:54 sorki joins (~sorki@gateway/tor-sasl/sorki)
16:34:33 texasmynsted joins (~texasmyns@212.102.45.106)
16:34:46 × vg quits (~vg@139.59.59.230) (Ping timeout: 256 seconds)
16:36:39 <delbmuts_> Now it compiles, but does not work as I would expect, i.e., the servant endpoint does not output the state. Still, progress. :) https://paste.debian.net/hidden/70b56d6e
16:37:07 <delbmuts_> s ki: thanks for having a look
16:38:33 × LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection)
16:38:41 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-jnheqdjklwmeetne) (Quit: Connection closed for inactivity)
16:39:28 <delbmuts_> dminuoso: TBH, I don't get how to use `trans'` (`flip runReaderT ($)`) in above code.
16:41:35 <merijn> boxscape: "Doesn't work with ImpredicativeTypes" in any GHC pre 9.0
16:41:51 <merijn> boxscape: ImpredicativeTypes is "not even broken" in any older GHCs
16:42:04 <boxscape> hm, okay
16:42:19 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
16:42:25 <boxscape> so you would expect it to compile with a working version of IP?
16:42:28 <boxscape> uh
16:42:29 <boxscape> IT
16:43:22 <merijn> boxscape: GHC 9.0 (or is it 9.2?) will have a redone version of ImpredicativeTypes that has, you know, some actual defined semantics
16:43:33 Sheilong joins (uid293653@gateway/web/irccloud.com/x-ubahtloahdzifjhq)
16:44:46 <boxscape> looks like it's been merged into master
16:45:18 Wamanuz joins (~wamanuz@78-70-34-81-no84.tbcn.telia.com)
16:45:28 conal joins (~conal@64.71.133.70)
16:46:17 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
16:47:36 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
16:47:47 <dminuoso> delbmuts_: That should be ($a) for some choice of a.
16:48:17 <dminuoso> err sorry
16:48:23 <dminuoso> just `flip runReaderT a`
16:48:45 × JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Read error: Connection reset by peer)
16:49:06 JJ15 joins (~JJ@94.197.17.236.threembb.co.uk)
16:49:41 × dxld quits (~dxld@80-109-136-248.cable.dynamic.surfer.at) (Remote host closed the connection)
16:49:43 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
16:49:55 LKoen joins (~LKoen@169.244.88.92.rev.sfr.net)
16:50:07 × conal quits (~conal@64.71.133.70) (Ping timeout: 246 seconds)
16:50:41 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
16:51:07 fendor_ joins (~fendor@91.141.2.60.wireless.dyn.drei.com)
16:51:08 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
16:51:11 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
16:52:17 reaverb joins (~reaverb@071-008-105-088.res.spectrum.com)
16:53:11 juuandyy joins (~juuandyy@90.166.144.65)
16:53:20 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
16:54:06 × fendor quits (~fendor@178.115.128.128.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
16:56:06 fendor_ is now known as fendor
16:56:58 × hololeap quits (~hololeap@unaffiliated/hololeap) (Ping timeout: 260 seconds)
16:59:19 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Read error: Connection reset by peer)
16:59:21 SupaYoshii joins (~supayoshi@213-10-140-13.fixed.kpn.net)
17:01:28 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
17:01:57 Tario joins (~Tario@201.192.165.173)
17:04:24 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
17:04:44 ephemient joins (uid407513@gateway/web/irccloud.com/x-pfymqtqxpsoxkvkd)
17:04:45 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
17:04:57 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
17:08:08 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
17:10:41 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
17:11:35 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
17:11:58 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
17:17:51 <avdb> Is there a way to define a list of all symbols, like you can with [0..9] for all numbers?
17:18:11 × reaverb quits (~reaverb@071-008-105-088.res.spectrum.com) (Quit: Leaving)
17:18:38 × tabemann quits (~tabemann@2600:1700:7990:24e0:70d3:975d:bfb3:7240) (Ping timeout: 264 seconds)
17:18:50 <Rembane> avdb: [0..] gets you all numbers, but I don't know if that's what you want.
17:19:02 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
17:19:23 <monochrom> generate all characters, then use isSymbol or something to filter it
17:22:59 oish joins (~charlie@228.25.169.217.in-addr.arpa)
17:23:18 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
17:25:54 <avdb> monochrom: I totally forgot about those functions ...
17:27:49 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 264 seconds)
17:27:56 oish joins (~charlie@128.127.104.126)
17:29:15 alp joins (~alp@88.126.45.36)
17:29:21 hackage csound-expression-dynamic 0.3.6 - dynamic core for csound-expression library https://hackage.haskell.org/package/csound-expression-dynamic-0.3.6 (AntonKholomiov)
17:30:21 hackage csound-expression 5.3.4, csound-expression-typed 0.2.4 (AntonKholomiov): https://qbin.io/sussex-head-e181
17:30:32 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
17:31:22 george_____t joins (5c06804c@host-92-6-128-76.as43234.net)
17:33:22 hackage csound-expression-opcodes 0.0.5.0 - opcodes for the library csound-expression https://hackage.haskell.org/package/csound-expression-opcodes-0.0.5.0 (AntonKholomiov)
17:33:27 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
17:33:52 × george_____t quits (5c06804c@host-92-6-128-76.as43234.net) (Remote host closed the connection)
17:34:52 hackage csound-sampler 0.0.10.0 - A musical sampler based on Csound https://hackage.haskell.org/package/csound-sampler-0.0.10.0 (AntonKholomiov)
17:34:53 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
17:35:13 <delbmuts_> Looks like my test client wasn't working as I'd expected. :) https://paste.debian.net/hidden/1de4954a/ Thanks all.
17:35:52 hackage csound-catalog 0.7.4 - a gallery of Csound instruments. https://hackage.haskell.org/package/csound-catalog-0.7.4 (AntonKholomiov)
17:36:51 hackage csound-controllers 0.1.1.0 - https://hackage.haskell.org/package/csound-controllers-0.1.1.0 (AntonKholomiov)
17:40:07 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
17:40:56 <Squarism> Has anyone managed to set up an editor that handles basic type inspection? If so, what editor / approach have you been using?
17:40:56 × triteraflops quits (~triterafl@host-208-96-90-136.public.eastlink.ca) (Read error: Connection reset by peer)
17:41:34 triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca)
17:42:15 × avdb quits (~avdb@ip-81-11-215-86.dsl.scarlet.be) (Read error: Connection reset by peer)
17:42:38 hekkaidekapus_ is now known as hekkaidekapus
17:42:59 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
17:43:16 avdb joins (~avdb@ip-81-11-215-86.dsl.scarlet.be)
17:43:22 <hekkaidekapus> boxscape: Indeed, it is already merged. For your example, the error is much better: <https://paste.tomsmeding.com/2KUFPpym>.
17:44:32 <hekkaidekapus> And from the proposal: “[impredicative instantiation] never looks at abstractions, pattern matching, lets, or any other expression.”
17:45:40 × nf quits (~n@monade.li) (Quit: Fairfarren.)
17:45:44 knupfer joins (~Thunderbi@200116b82c7f8800788807fffea80bcf.dip.versatel-1u1.de)
17:46:08 × knupfer quits (~Thunderbi@200116b82c7f8800788807fffea80bcf.dip.versatel-1u1.de) (Remote host closed the connection)
17:46:17 knupfer joins (~Thunderbi@200116b82c7f8800d55fa997137c91a1.dip.versatel-1u1.de)
17:47:52 × jrqc quits (~rofl@96.78.87.197) (Ping timeout: 256 seconds)
17:48:03 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
17:48:33 jrqc joins (~rofl@96.78.87.197)
17:48:38 conal joins (~conal@64.71.133.70)
17:49:07 × conal quits (~conal@64.71.133.70) (Client Quit)
17:49:22 jespada joins (~jespada@90.254.245.49)
17:49:53 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
17:50:49 × shangxiao quits (~davids@101.181.159.140) (Quit: WeeChat 3.0)
17:50:52 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
17:52:28 juuandyy joins (~juuandyy@90.166.144.65)
17:54:39 <shapr> Squarism: do you mean the Haskell language server?
17:54:56 jil joins (~user@45.86.162.6)
17:54:58 <jil> hello
17:55:04 <shapr> Squarism: I have this setup for emacs and it's great! https://github.com/haskell/haskell-language-server
17:55:06 <shapr> hi jil
17:56:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:56:56 Jeanne-Kamikaze joins (~Jeanne-Ka@iakosalt-94.nationalnet.com)
17:57:24 <jil> I'm still learning the basic of haskell and I run into this error that I don't undestand. Why is the simple function not working ? https://dpaste.org/nwxq
17:58:09 <shapr> :t foldr (+) 0
17:58:10 <lambdabot> (Foldable t, Num b) => t b -> b
17:58:29 renzhi joins (~renzhi@2607:fa49:655f:e600::28da)
17:58:33 <dolio> You gave it 1 where it expected a list.
17:58:35 <shapr> jil: how would you read the type of the function you pasted?
17:58:47 <dolio> And also gave it too many arguments.
17:58:55 <shapr> jil: How would you explain this? fsum :: Num a => [a] -> a
17:59:45 <jil> ok, I'm still confused about passing argument as list. Thank you.
18:00:14 mcginleyr1 joins (uid475794@gateway/web/irccloud.com/x-osmqhtuhvgdcdnxg)
18:00:26 <monochrom> That's no different from writing any list in any context.
18:00:37 <jil> shapr that means that for all numerical type a fsum expect a list of a and returns an object of type a
18:00:55 <solonarv> '1 2' isn't a list, it's just two integer literals
18:01:01 <solonarv> do you know how to write a list?
18:01:13 <jil> [1 2] ?
18:01:15 <shapr> jil: yeah, what solonarv said, how would you write a list?
18:01:19 <shapr> yes, that's a list
18:01:33 <shapr> but you need a comma between the elements
18:01:48 <jil> [1,2] then.
18:02:03 <jil> or (1:(2:[]))
18:02:15 <shapr> :t [1,2]
18:02:17 <lambdabot> Num a => [a]
18:02:23 <shapr> :t (1:(2:[]))
18:02:25 <lambdabot> Num a => [a]
18:02:42 <shapr> jil: have you used :t or :type in ghci?
18:03:04 <shapr> I use :t to figure out the type of things all the time
18:04:03 × oish quits (~charlie@128.127.104.126) (Ping timeout: 260 seconds)
18:04:09 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
18:04:23 nf joins (~n@monade.li)
18:04:30 <jil> yes shapr, it's realy a syntaxic erro as I forgot how to write a list and did not understand the error "non type variable argument in the constraint : Num (t1 -> t2)"
18:04:56 <jil> [1,2] == (1:(2:[]))
18:05:00 <shapr> > foldr max 0 [1,3,9,6]
18:05:06 <lambdabot> 9
18:05:28 <jil> > [1,2] == (1:(2:[]))
18:05:30 <lambdabot> True
18:05:32 <shapr> yay!
18:05:43 <shapr> jil: you got it!
18:05:43 oish joins (~charlie@228.25.169.217.in-addr.arpa)
18:06:22 × noteness quits (noteness@unaffiliated/nessessary129) (Ping timeout: 260 seconds)
18:06:36 <jil> :t max
18:06:38 <lambdabot> Ord a => a -> a -> a
18:06:58 × boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 260 seconds)
18:07:12 <shapr> ok, now back to figuring out how to get started with haskell.nix for me
18:07:25 <jil> thank you shapr
18:07:33 <jil> what haskell.nix ?
18:07:35 nehsou^ joins (nehsou@ip98-184-89-2.mc.at.cox.net)
18:07:47 <shapr> jil: it's a way to compile haskell with NixOS
18:07:58 <shapr> jil: I'm glad to help, do you have more questions?
18:09:00 christo joins (~chris@81.96.113.213)
18:09:35 <jil> not really . Thank you. I'll get back to my book "programming in Haskel" from Graham Hutton. Its great
18:09:47 <shapr> oh yeah! that's a great book!
18:10:01 shapr checks his bookshelf
18:10:13 <shapr> oh, my copy is still in one of my book boxes.
18:10:18 <dsal> shapr: nix-build -A $project.components.exes.$project or nix-env -f default.nix -iA $project.components.exes.$project
18:10:27 <dsal> That's about all I do with it. heh
18:10:38 <shapr> dsal: is that for haskell.nix? if yes, how do you start a new empty project?
18:10:48 <dsal> stack new and then copy in the file.
18:11:03 <shapr> I want to use cabal, and I don't have cabal in scope
18:11:14 <shapr> cause that's the point of nix, right?
18:11:32 <dsal> Yeah, but for that, cabal2nix might be better. You can bootstrap with a nix-shell, I suppose.
18:11:34 urek__ is now known as urek
18:12:11 benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
18:12:23 <shapr> dsal: I don't know enough. I do know we're using haskell.nix at work so I want to start using it myself
18:12:58 <dsal> I've only used haskell.nix with stack. I just copy the same default.nix around for projects I've already started with stack.
18:13:06 <dsal> I thought cabal2nix was the way when you're using cabal.
18:13:15 <shapr> maybe? I don't know!
18:13:25 × christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds)
18:13:41 <dsal> Yeah, says it works with cabal, so I guess it's the same process.
18:13:42 <shapr> We did switch our CI build from stack to haskell.nix
18:14:04 <dsal> `nix-shell -p cabal-install` and then do whatever you normally do to start your project. Add default.nix, and it should be good.
18:14:06 <shapr> but from what I've read, haskell.nix gives you access to all the library versions on hackage, not just the blessed subset you get from a stack release
18:14:21 conal joins (~conal@64.71.133.70)
18:14:30 <dsal> Yeah, there's a daily derivation build of all the things. Happens around 18:00 my time, I think. heh
18:14:48 <shapr> bah: cabal: The program 'ghc' version >=7.0.1 is required but it could not be found
18:14:59 <shapr> How do I get cabal-install and ghc 8.10.2 in scope at the same time?
18:15:07 <dsal> Weird. You can add more stuff after -p
18:15:16 <shapr> oh
18:16:13 <dsal> You can also have a shell.nix that lists all those things, but starting a project is almost a bootstrap problem, so it might be easier just to make an alias or something.
18:16:29 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
18:16:53 <dsal> I'm kind of hybrid. I use regular stack, but with its nix extensions. Then I use haskell.nix (and cachix) to build for various places I deploy.
18:17:43 <shapr> I have a variety of disagreements with stack
18:17:46 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-qtyikxmplneltdye)
18:19:45 <shapr> jil: what got you started with Haskell?
18:19:57 × knupfer quits (~Thunderbi@200116b82c7f8800d55fa997137c91a1.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
18:20:58 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds)
18:22:03 delbmuts_ parts (52874ce6@ppp-82-135-76-230.dynamic.mnet-online.de) ()
18:22:48 <dsal> My only problem with stack is that migrating away from it seems to get me a variety of disadvantages. I tend to work with `stack test --file-watch` running. I've not even figured out how to run tests with haskell.nix other than to explicitly name them in a build and then run the thing that got built. i.e., there's no 'run the thing in this project' that seems to work.
18:23:01 × adm quits (~adm@117.223.63.167) (Remote host closed the connection)
18:23:29 adm joins (~adm@117.223.63.167)
18:26:28 <shapr> dsal: I use entr for all those same things
18:27:45 × adm quits (~adm@117.223.63.167) (Ping timeout: 256 seconds)
18:28:35 <hekkaidekapus> dsal: haskell.nix’s motto is ”If it works with cabal-install/stack, it should work here, too.” Based on that, I would say, enter a shell with stack inside (instead of generating Nix stuff with stack) and `stack test`. (But I’m no expert.)
18:28:58 <dsal> Maybe for the file-watch part, but not for the "just build this project" part. The project name is constructed in haskell.nix and you can't just ask for whatever the current ones.
18:29:39 <merijn> hekkaidekapus: Mottos don't always reflect reality ;)
18:29:39 × iqubic` quits (~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) (Quit: ERC (IRC client for Emacs 28.0.50))
18:29:55 iqubic joins (~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a)
18:29:57 <dsal> `nix-shell --command 'stack test'` doesn't get me much further than `stack test` which is already using nix components. :)
18:30:16 <hekkaidekapus> merijn: The maintainers are quite eager to fix bugs that contradict the motto.
18:30:27 <dsal> The annoying part of haskell.nix is the -A ............ part.
18:30:51 <shapr> dsal: what does that mean?
18:30:54 <shapr> why is that annoying?
18:30:58 shapr wants to learn!
18:31:12 <dsal> i.e., I have a lot of haskell projects and when I'm working with stack, I type the same command in each directory. With haskell.nix, I have to type a unique command for each project in each directory that's specific to the project.
18:33:46 <hekkaidekapus> (Which is the point of Nix: specify exactly every steps and don’t rely on global state—here ~/.stack…)
18:33:49 <dsal> I would really like to know what the right way to run tests is for haskell.nix. I mostly like the model, but it only seems to build things and then just kind of drop them on the floor. Ideally, CI would mostly just be copying an activation file and not lots of custom editing. The per-project custom stuff has caused me a lot of problems in the past when a common part broke everywhere and I had to repeat the fix.
18:34:22 <dsal> Global state is the opposite of what I said.
18:34:39 <hekkaidekapus> Maybe I misunderstood.
18:34:53 <dsal> I have to go into my project directory or I don't get the default.nix file. But then I also have to type a command specific to that project while in the project directory.
18:35:08 hekkaidekapus barely knows how stack works.
18:35:12 <dsal> With stack (and I presume cabal, though I've not used it directly very much), I can enter the project directory and just type "stack test"
18:35:36 <iqubic> Yeah, I have no idea how to run tests in haskell when using nix.
18:37:39 <dsal> The haskell.nix documentation sort of handwaves the names of attributes it defines, but I find only some of them work (maybe). It'd be super convenient if it just listed what was possible in a given project.
18:38:37 <dsal> e.g., it does suggest it *can* build tests, but none of my guesses as to what they're called seem to get me anywhere.
18:39:16 <hekkaidekapus> dsal: I see you aren’t in #haskell.nix. You could ping maintainers there and there is almost always answers, timezones permitting.
18:39:31 <dsal> Thanks!
18:39:38 <hekkaidekapus> np
18:40:39 <iqubic> What is haskell.nix? Is that just nix on haskell?
18:41:13 <hekkaidekapus> iqubic: <https://github.com/input-output-hk/haskell.nix>
18:41:33 <iqubic> Ah. I see.
18:41:36 <hekkaidekapus> It’s another Nix infrastructure for Haskell.
18:42:34 <dsal> It's been useful for me to get builds out on nixos systems.
18:42:41 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
18:43:28 jollygood2 joins (~bc8165ab@217.29.117.252)
18:43:30 <shapr> iqubic: I *think* the default haskell+nix infrastructure only offers you a single choice of haskell compiler and library versions, and haskell.nix does not
18:43:34 <shapr> but I'm not certain of that
18:43:51 <iqubic> No, I can easily change my compiler. That's not too hard.
18:44:01 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 264 seconds)
18:44:21 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
18:44:24 <dsal> haskell.nix just makes any cabal or stack project also a nix project.
18:44:47 <dsal> Or as it says at the top of the doc I'm looking at: haskell.nix can automatically translate your Cabal or Stack project and its dependencies into Nix code.
18:44:50 <xerox_> is there an id :: a# -> a# ? if that makes any sense
18:44:52 <jollygood2> hi. I have incomplete-patterns set, but this isn't trigger compiler warning: [month, day, year] <- sepEndBy integral (char '.')
18:44:54 <jollygood2> how come?
18:45:12 × shf quits (~sheaf@2a01:cb19:80cc:7e00:18fb:674e:a5dc:b905) (Read error: Connection reset by peer)
18:45:23 <merijn> jollygood2: Because Parser is an instance of MonadFail
18:45:28 conal joins (~conal@64.71.133.70)
18:45:46 <merijn> jollygood2: And pattern match failures in do notation use "fail" from MonadFail (usually "parse failure" in parsers)
18:45:51 hackage config-value 0.8.1 - Simple, layout-based value language similar to YAML or JSON https://hackage.haskell.org/package/config-value-0.8.1 (EricMertens)
18:45:58 <shapr> iqubic: how do I get ghc 8.10.2 and a particular version of something like the github library?
18:46:07 <iqubic> I don't know.
18:46:16 <shapr> oh, how do you change your compiler?
18:46:18 JJ15_ joins (~JJ@94.197.17.236.threembb.co.uk)
18:46:27 × Varis quits (~Tadas@unaffiliated/varis) (Ping timeout: 256 seconds)
18:46:52 <jollygood2> merijn, is there a "stronger" incomplete-pattern warning, that will trigger that regardless if the instance is MonadFail?
18:47:12 <merijn> incomplete-uni-patterns, maybe?
18:47:19 <iqubic> shapr: Also not sure.
18:47:26 <iqubic> I just know that I can.
18:47:32 <shapr> iqubic: oh, ok
18:47:37 <shapr> well if you figure out, I'd like to know :-)
18:48:39 JJ15__ joins (~JJ@2a00:23a8:4382:a900:68df:3986:d3b1:2e08)
18:49:36 <jollygood2> "The flag -fwarn-incomplete-uni-patterns is similar, except that it applies only to lambda-expressions and pattern bindings, constructs that only allow a single pattern:"
18:49:41 <jollygood2> doesn't look like that is it
18:49:51 × JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 256 seconds)
18:50:35 <merijn> jollygood2: You have a pattern bindings that allows only a single pattern...
18:50:45 <jollygood2> I do? :D
18:50:54 <jollygood2> let me try
18:51:14 <merijn> "[month, day, year] <- ..." that's a pattern and it's binding stuff, and it has only one pattern...
18:51:16 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
18:51:18 × JJ15_ quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 260 seconds)
18:51:24 × renzhi quits (~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 240 seconds)
18:51:27 <jollygood2> still, the wording makes it seem like it will catch LESS than warn-incomplete-patterns will. I'll still try it
18:51:37 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
18:51:47 <merijn> jollygood2: It catches *different* things
18:52:06 <geekosaur> because it doesn't imply -Wincomplete-patterns?
18:52:08 <merijn> jollygood2: i.e. it only covers lambda patterns and (presumably?) do notation patterns and nothing else
18:52:35 <merijn> jollygood2: Whereas -Wincomplete-patterns covers only patterns that are *not* uni-patterns
18:54:22 <jollygood2> I've set it
18:54:27 <jollygood2> I still don't get the warning
18:55:40 <geekosaur> that may be because of MonadFail, and the answer is probably no because MonadFail overrides
18:55:58 boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
18:56:07 <merijn> geekosaur: tbh, with the original desugaring of Monad it might not have worked either way
18:56:15 <boxscape> hekkaidekapus thanks, that's interesting
18:56:20 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:56:21 <solonarv> failable patterns in a 'do' binding cause a type error when the monad in use isn't MonadFail
18:56:34 <jollygood2> no warning: do [_,_] <- (pure [1,2] :: IO [Int]); return 10
18:56:45 <merijn> solonarv: Right, but he has a parser, so he has a MonadFail
18:56:50 <merijn> jollygood2: IO is MonadFail, though
18:57:19 alp__ joins (~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61)
18:57:30 <jollygood2> right.. my second question was how to get this warning in MonadFail context.. and the answer seems to be, you can't
18:57:41 <merijn> That could very well be
18:58:09 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
18:59:27 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:59:34 bitmapper joins (uid464869@gateway/web/irccloud.com/x-tesxvyxpigmxrfxg)
19:00:38 × alp quits (~alp@88.126.45.36) (Ping timeout: 260 seconds)
19:00:51 <hekkaidekapus> boxscape: I suspect that was a contrived example extracted from a larger program. If you are hell-bent on using impredicativity in pattern position, you could 1) wait for type-level lambdas :d 2) hack ViewPatterns in your code.
19:00:57 <hekkaidekapus> to, to' :: A -> B
19:01:04 <hekkaidekapus> to fg = (fst fg, snd fg)
19:01:10 <hekkaidekapus> to' (to -> x) = (fst x, snd x)
19:01:36 <boxscape> hekkaidekapus it wasn't; I was just trying to figure out whether that particular equation holds in predicate logic and haskell's type checker seemed a convenient way to prove it
19:01:52 <hekkaidekapus> Ah, ok.
19:02:20 × sorki quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
19:02:32 <boxscape> but thanks for the tip anyway :)
19:02:43 <hekkaidekapus> \o/
19:03:23 sorki joins (~sorki@gateway/tor-sasl/sorki)
19:03:28 berberman_ joins (~berberman@unaffiliated/berberman)
19:04:14 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
19:06:02 × xff0x quits (~fox@2001:1a81:524c:7b00:4922:8a11:2fad:afb4) (Ping timeout: 264 seconds)
19:06:44 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
19:06:46 xff0x joins (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd)
19:07:46 <xerox_> @hoogle Word32# -> Word#
19:07:47 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
19:07:47 <lambdabot> GHC.Exts unsafeCoerce# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (a :: TYPE k0) (b :: TYPE k1) . a -> b
19:07:47 <lambdabot> GHC.Prim unsafeCoerce# :: a -> b
19:09:56 × Jeanne-Kamikaze quits (~Jeanne-Ka@iakosalt-94.nationalnet.com) (Ping timeout: 240 seconds)
19:09:57 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:10:00 × cjenn quits (~colby@cpe-24-208-40-120.new.res.rr.com) (Quit: cjenn)
19:10:33 gproto23 joins (~gproto23@unaffiliated/gproto23)
19:12:00 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds)
19:12:08 juuandyy joins (~juuandyy@90.166.144.65)
19:12:58 Guest_22 joins (a2f58eed@ott-lmlp35-237.hge.net)
19:13:13 Varis joins (~Tadas@unaffiliated/varis)
19:13:22 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:13:31 × Guest_22 quits (a2f58eed@ott-lmlp35-237.hge.net) (Remote host closed the connection)
19:14:06 <dminuoso> Why does hoogle produce unsafeCoerce at all here?
19:14:13 <dminuoso> That seems rather silly
19:14:51 <jollygood2> it matches :)
19:14:56 <hpc> the real question is why it doesn't produce it all the time :D
19:15:07 <merijn> hpc: Because it's not in the top hits :p
19:15:09 dxld joins (~dxld@2a01:4f8:201:89ff:22cf:30ff:fe67:8db)
19:15:22 <boxscape> is Word# even Lifted?
19:15:41 <dminuoso> jollygood2: Arguably unsafeCoerce should be special cased, as it matches any function...
19:15:55 <dminuoso> And it's almost assuredly not the thing you want when you look for `S -> T`
19:16:09 <dminuoso> And for those who do want it, it's safe to assume they are fully aware of its existence..
19:16:09 <monochrom> Word# is not lifted.
19:16:10 <solonarv> % :k Word#
19:16:10 <yahb> solonarv: TYPE 'WordRep
19:16:11 <boxscape> % (unsafeCoerce :: Word32# -> Word#)
19:16:11 <yahb> boxscape: ; <interactive>:41:2: error:; * Couldn't match a lifted type with an unlifted type; When matching types; b0 :: *; Word# :: TYPE 'WordRep; Expected type: Word32# -> Word#; Actual type: a0 -> b0; * In the expression: (unsafeCoerce :: Word32# -> Word#); In an equation for `it': it = (unsafeCoerce :: Word32# -> Word#)
19:16:12 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:16:13 <boxscape> it doesn't match
19:16:14 <solonarv> nope, not lifted
19:16:27 <monochrom> Err nevermind
19:16:56 <boxscape> hm, I think you were right?
19:16:58 <boxscape> monochrom
19:17:01 <dminuoso> I mean it matches from the perspective Hoogle because it likely doesnt take kinds into consideration
19:17:01 <boxscape> why never mind?
19:17:16 <boxscape> hm I suppose so
19:18:22 IamfromSpace joins (617897dd@97-120-151-221.ptld.qwest.net)
19:18:22 <dminuoso> I mean a fully correct hoogle would likely be hard to implement right, in the presence of tyfams and other things.
19:18:55 <monochrom> Heh so unsafeCoerce is safer than I thought
19:19:22 dminuoso holds monochrom's beer
19:19:41 <boxscape> % f :: Word32# -> Word#; f = unsafeCoerce# -- this is what you want for true power
19:19:41 <yahb> boxscape:
19:20:28 <merijn> boxscape: I think you miswrote "real ultimate power" ;)
19:20:43 <boxscape> perhaps :)
19:21:14 × benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0)
19:21:33 benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
19:21:41 <dminuoso> % let k = flip const unsafeCoerce# in runCont (pure 1) k
19:21:41 <yahb> dminuoso: 1
19:21:47 <dminuoso> Looks safe to me!
19:22:11 × alp__ quits (~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61) (Ping timeout: 272 seconds)
19:22:38 <dminuoso> `fix . const` is my favourite combinator of the month however.
19:22:48 <merijn> :t fix . const
19:22:51 <lambdabot> c -> c
19:22:55 <iqubic> What does that do?
19:23:00 <dminuoso> Try it out!
19:23:08 <merijn> iqubic: id :p
19:23:16 elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
19:23:18 <iqubic> @let id' = fix . const
19:23:20 <lambdabot> Defined.
19:23:30 <iqubic> > id' 34
19:23:32 <lambdabot> 34
19:23:34 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
19:23:38 <iqubic> How is that just id?
19:23:47 <boxscape> @src fix
19:23:47 <lambdabot> fix f = let x = f x in x
19:23:53 <dminuoso> iqubic: Surely you've been long around to figure this one out yourself.
19:23:57 <iqubic> I have.
19:24:06 <boxscape> fix (const 4) = let x = (const 4) x in x
19:25:02 <hpc> alternatively, if you formulate it as fix f = f (fix f):
19:25:12 <hpc> fix (const 4) = const 4 (const 4 (const 4 (...
19:25:30 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
19:25:46 <dminuoso> what I find curious is how these simple functions const, id, fix are all somehow connected in strange and interesting ways
19:25:56 × shailangsa quits (~shailangs@host86-186-177-155.range86-186.btcentralplus.com) (Ping timeout: 240 seconds)
19:26:02 Iceland_jack joins (~user@31.124.48.169)
19:26:02 shatriff joins (~vitaliish@176.52.219.10)
19:26:11 <dminuoso> or equivalently their type versions Const, Identity, etc
19:26:18 <boxscape> you're getting dangerously close to doing combinator calculus
19:27:44 <boxscape> hmm I wonder which one(s) you need in addition to fix for functional completeness
19:28:13 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
19:28:17 ralu_ joins (~ralu@2a00:1a20:2200:8045:8200:bff:fe5a:48a3)
19:28:21 <boxscape> (hm is functional completeness the right term here? I actually only know it from logic)
19:28:34 SeMas joins (uid32977@gateway/web/irccloud.com/x-taxggkdzpxqpcjih)
19:29:00 <dminuoso> boxscape: Heh that reminds me of that revelation that, in principle, Applicative gives you a full SK(I) combinator calculus almost directly. It's just the type system that is in the way.
19:29:09 <boxscape> I was just thinking about that :)
19:29:20 <solonarv> const and ap are all you need if you throw away types
19:29:29 <solonarv> I don't think you can write fix using them though
19:29:39 <dminuoso> why not?
19:30:05 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds)
19:30:14 <dminuoso> You can express Y in SKI
19:30:15 <solonarv> well, you can write fix if you ignore types, but if you try to type-check that expression you end up with an infinite type
19:30:26 <solonarv> SK(I) is untyped so that works
19:30:40 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
19:30:40 <boxscape> I wonder if you can get rid off one of them if you have Y as a given
19:30:43 <dminuoso> Right, that's what I was saying with "the type system is in the way"
19:30:52 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
19:31:18 <dminuoso> solonarv: Im almost convinced you can just do it with newtypes
19:31:18 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
19:31:28 <dminuoso> Like, you can write a lambda style Y combinator with newtypes too
19:31:36 <solonarv> oh, I'm sure you can
19:31:42 <dminuoso> (Ignoring simplifier panics that get triggered if you dont disable optimizations in GHC)
19:32:20 <dminuoso> To me the newtypes are just noise demanded by the type system, they wouldnt invalidate such an implementation
19:32:41 acidjnk_new joins (~acidjnk@p200300d0c719ff217d005cd8d9846e4e.dip0.t-ipconnect.de)
19:34:56 × ralu_ quits (~ralu@2a00:1a20:2200:8045:8200:bff:fe5a:48a3) (Quit: Leaving)
19:35:46 <solonarv> yes, \a -> s i i (s (k a) (s i i)) is a fixed-point combinator
19:36:03 <solonarv> (you can rewrite that lambda to use only combinators but I'm too lazy for that)
19:36:18 <boxscape> we have a tool to do it
19:36:20 <boxscape> @pl \a -> s i i (s (k a) (s i i))
19:36:20 <lambdabot> s i i . flip s (s i i) . k
19:36:31 <solonarv> :t let s = ap; i = id; k = const in \a -> s i i (s (k a) (s i i))
19:36:31 <boxscape> now just replace . by C and flip by B, IIRC
19:36:33 <lambdabot> error:
19:36:33 <lambdabot> • Occurs check: cannot construct the infinite type: a0 ~ a0 -> b
19:36:33 <lambdabot> Expected type: ((a0 -> b) -> b) -> a0 -> b
19:36:44 × IamfromSpace quits (617897dd@97-120-151-221.ptld.qwest.net) (Remote host closed the connection)
19:37:00 <dminuoso> s (k (s i i))(s (s (k s) k) (k (s i i)))
19:37:04 <dminuoso> Copied straight out of google!
19:37:05 <solonarv> but unsurprisingly you get this type error, which is basically the same one that the lambda-calculus Y combinator has
19:37:24 <dminuoso> solonarv: mmm you know what, we can convince it!
19:37:33 <solonarv> yes, with newtypes !
19:37:45 <dminuoso> % let s = ap; i = id; k = const in unsafeCoerce (\a -> s i i (s (k a) (s i i)))
19:37:46 <yahb> dminuoso: ; <interactive>:1:58: error:; * Occurs check: cannot construct the infinite type: a0 ~ a0 -> b0; Expected type: ((a0 -> b0) -> b0) -> a0 -> b0; Actual type: (a0 -> b0) -> a0 -> b0; * In the second argument of `s', namely `i'; In the expression: s i i (s (k a) (s i i)); In the first argument of `unsafeCoerce', namely `(\ a -> s i i (s (k a) (s i i)))'; * Relevant bindi
19:37:54 <dminuoso> Oh boy, needs more unsafeCoerce!
19:38:04 <solonarv> you need to sprinkle them around inside the expression, yeah
19:38:19 <hpc> build it like idris intermediate representation
19:38:28 <hpc> every subexpression is unsafeCoerced :D
19:38:29 <solonarv> the root of the issue is self-application
19:38:29 <dminuoso> I got an idea, GHC has the right extension for that
19:38:32 <boxscape> % let s = unsafeCoerce ap; i = unsafeCoerce id; k = unsafeCoerce const in unsafeCoerce (\a -> s i i (s (k a) (s i i)))
19:38:32 <yahb> boxscape: ; <interactive>:2:22: error:; * Ambiguous type variable `m0' arising from a use of `ap'; prevents the constraint `(Monad m0)' from being solved.; Probable fix: use a type annotation to specify what `m0' should be.; These potential instances exist:; instance Monad m => Monad (WrappedMonad m) -- Defined in `Control.Applicative'; instance ArrowApply a => Monad (ArrowMon
19:38:35 <boxscape> makes senes
19:38:38 <dminuoso> % (x!) = unsafeCoerce x
19:38:39 <yahb> dminuoso: ; <interactive>:3:2: error: Expression syntax in pattern: x !
19:38:43 <dminuoso> % (x&) = unsafeCoerce x
19:38:43 <yahb> dminuoso: ; <interactive>:4:2: error: Expression syntax in pattern: x &
19:38:45 <dminuoso> Mmm
19:38:49 <dminuoso> % (&) = unsafeCoerce x
19:38:49 <yahb> dminuoso: ; <interactive>:5:20: error: Variable not in scope: x
19:38:52 <dminuoso> % (&) = unsafeCoerce
19:38:52 <yahb> dminuoso:
19:38:54 <dminuoso> There!
19:41:29 <boxscape> maybe someone made a deepUnsafeCoerce quasiquoter that wraps every subexpr in unsafeCoerce
19:41:47 × amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 260 seconds)
19:42:09 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
19:42:23 knupfer joins (~Thunderbi@i5E86B463.versanet.de)
19:42:41 × toorevitimirp quits (~tooreviti@117.182.183.16) (Remote host closed the connection)
19:43:36 conal joins (~conal@64.71.133.70)
19:45:17 amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com)
19:46:52 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
19:47:48 christo joins (~chris@81.96.113.213)
19:48:50 <boxscape> although I guess you'd just end up with a bunch of ambiguous type variables typically
19:49:13 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
19:49:16 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:49:23 <dminuoso> boxscape: easily addressed with some sort of type checker plugin
19:49:31 <boxscape> fair point
19:50:13 shatriff_ joins (~vitaliish@176.52.219.10)
19:50:36 shailangsa joins (~shailangs@host86-186-177-155.range86-186.btcentralplus.com)
19:52:33 × shatriff quits (~vitaliish@176.52.219.10) (Ping timeout: 260 seconds)
19:53:28 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
19:54:43 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
19:59:05 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds)
20:01:02 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
20:01:52 hackage xmobar 0.37 - A Minimalistic Text Based Status Bar https://hackage.haskell.org/package/xmobar-0.37 (JoseAntonioOrtegaRuiz)
20:04:53 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:05:48 ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta)
20:10:10 × sagax quits (~sagax_nb@213.138.71.146) (Read error: Connection reset by peer)
20:11:11 <sondr3> That's a new error when launching cabal repl: `/tmp/bios-wrapper5424-294: line 4: : No such file or directory`
20:12:01 <sondr3> Isn't bios used in HLS? Not sure why it interferes with cabal
20:14:15 × avdb quits (~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 260 seconds)
20:16:37 × ggole quits (~ggole@2001:8003:8119:7200:69c3:3fe:81:8dbf) (Quit: Leaving)
20:17:39 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
20:18:28 <merijn> sondr3: WHich version of cabal-install?
20:19:58 Unhammerd is now known as Unhammer
20:20:09 <sondr3> merijn: cabal-install version 3.2.0.0, though I just waited a bit and now it works again
20:23:53 × ephemient quits (uid407513@gateway/web/irccloud.com/x-pfymqtqxpsoxkvkd) (Quit: Connection closed for inactivity)
20:23:59 sagax joins (~sagax_nb@213.138.71.146)
20:24:29 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
20:26:12 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
20:26:23 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
20:26:28 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
20:26:31 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Remote host closed the connection)
20:26:44 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
20:27:07 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
20:27:08 conal joins (~conal@64.71.133.70)
20:28:22 Chi1thangoo is now known as jmchael
20:28:36 avdb joins (~avdb@ip-81-11-215-86.dsl.scarlet.be)
20:30:16 × amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 240 seconds)
20:30:20 × ChanServ quits (ChanServ@services.) (shutting down)
20:30:26 <iqubic> jle`: Thank you for updating your AoCAPI. I have verified that it works with the lastest version of servant and GHC.
20:30:48 <iqubic> I can successfully get an error of "Left (AoCReleaseError 117187.692251649s)"
20:31:30 <iqubic> I don't understand what the number is, and the docs state it's a NominalDiffTime, but IDK what that is.
20:31:35 ChanServ joins (ChanServ@services.)
20:31:35 kornbluth.freenode.net sets mode +o ChanServ
20:32:05 <koz_> iqubic: NominalDiffTime represents a separation in time that's not pinned to anything specific ("five minutes ago", "tomorrow", "five years from now" etc).
20:32:23 <koz_> It's encoded as (possibly fractional) seconds.
20:33:07 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
20:33:10 <iqubic> Right. And in this case it's telling me how long I'll need to wait until AOC 2020 starts
20:33:59 <iqubic> But the important part isn't that number, but that the jle's updates that he made yesterday actually work.
20:35:49 × avdb quits (~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 256 seconds)
20:36:38 <iqubic> Looking at Haskell's Time support, and I'm wondering something; What's the difference between a NominalDiffTime and a DiffTime?
20:36:49 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
20:37:12 <merijn> iqubic: DiffTime is *clock* time
20:37:21 <merijn> iqubic: NominalDiffTime is monotonic time
20:37:26 <koz_> NominalDiffTime ignores leap seconds.
20:37:33 <iqubic> So then what's UTCTime?
20:37:40 <koz_> UTCTime is a specific time.
20:37:45 <koz_> Not a difference between two times.
20:37:46 <iqubic> Right, I see.
20:37:51 <iqubic> Ah, I see.
20:37:56 × Maxdamantus quits (~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 256 seconds)
20:38:07 <merijn> iqubic: i.e. 5 minutes of NominalDiffTime might be 1 hour and 5 minutes of DiffTime :p
20:38:17 <merijn> Due to daylight savings time
20:38:19 <iqubic> I see.
20:38:39 × natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
20:38:44 <merijn> It's pedantic, but time is complex enough that pedantry is warranted :p
20:38:51 irc_user joins (uid423822@gateway/web/irccloud.com/x-qjzncdzdidsoxfjl)
20:39:07 <iqubic> Does Haskell support timezone conversions, or not?
20:39:25 <merijn> Sure, as much as anything does
20:39:35 <merijn> Well "Haskell" not so much
20:39:39 Maxdamantus joins (~Maxdamant@unaffiliated/maxdamantus)
20:39:40 <merijn> But the time library, sure
20:39:59 <iqubic> Right.
20:40:00 appostasiamo joins (~appostasi@185.183.147.131)
20:40:08 sfvm joins (~sfvm@37.228.215.54)
20:40:09 <merijn> iqubic: See ZonedTime
20:40:17 <iqubic> I'll look at that later.
20:40:29 <merijn> iqubic: Which is essentially "a time + a time zone"
20:40:48 <merijn> ugh
20:40:54 <appostasiamo> ciao
20:41:00 <merijn> time doesn't have geographic timezone names?
20:41:13 <appostasiamo> !list
20:41:14 <monochrom> appostasiamo: https://hackage.haskell.org/
20:41:22 xerox_ chuckles
20:41:24 <koz_> merijn: Nope.
20:41:38 <koz_> (speaking as someone who actually had to look up this info recently)
20:41:39 <merijn> Ok, I retract my statement :p
20:41:53 <merijn> time on supports UTC offsets, not timezones :p
20:42:06 <merijn> s/on/only
20:42:06 <xerox_> postgres does timezone conversion well
20:42:18 ph88 joins (~ph88@2a02:8109:9e00:7e5c:38a3:bec1:bd68:259f)
20:42:31 <merijn> xerox_: I don't believe that :p
20:42:37 <xerox_> it's true!
20:42:41 <merijn> Because there's literally no way to do timezone conversion *well*
20:42:48 <merijn> The best you can manage is *not terrible*
20:43:26 natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
20:44:03 hekkaidekapus awaits the future vs. past times distinction…
20:44:12 <merijn> hekkaidekapus: For example :p
20:44:26 <hekkaidekapus> heh… I saw you coming :p
20:44:38 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
20:44:40 × appostasiamo quits (~appostasi@185.183.147.131) (Remote host closed the connection)
20:44:58 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
20:45:01 <merijn> I'm coming to take away the programming license of anyone who says "you should always convert datetime to UTC" >.>
20:45:11 <hekkaidekapus> lol
20:45:25 <merijn> A little knowledge is a dangerous thing!
20:46:12 <hekkaidekapus> In the line of “Fear the person of one book.” s/book/universal time/
20:46:49 <merijn> hekkaidekapus: It's especially relevant with all of the EU reconsidering daylight savings time in the near future
20:46:49 × dddddd quits (~dddddd@unaffiliated/dddddd) (Quit: dddddd)
20:47:17 <dminuoso> iqubic: https://wiki.haskell.org/wikiupload/9/90/Time-diagram.png
20:47:27 <hekkaidekapus> merijn: Wait, isn’t the decision already made?
20:47:59 <merijn> hekkaidekapus: AFAIK the decision to stop has been made, but nothing has been finalised about which permanent time will be used by which country
20:48:26 <ddellacosta> dminuoso: that's great, filing it away, thanks
20:48:41 <hekkaidekapus> iirc, each country has the leeway in phasing it out.
20:48:57 <merijn> hekkaidekapus: Eh, last news article I saw said end 2021 :p
20:49:06 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
20:49:50 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:50:13 <hekkaidekapus> merijn: Ok, then. It’s not like I’m running for a seat in the EP ;) (If I did, it’d be under the Pirates banner, of course. :P )
20:50:50 dddddd joins (~dddddd@unaffiliated/dddddd)
20:52:16 sh92 joins (~sh9@softbank060116136158.bbtec.net)
20:53:44 × sh91 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 256 seconds)
20:54:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
20:56:09 <hekkaidekapus> @where cabal-stack-disambiguation
20:56:09 <lambdabot> "The Cabal/Stack Disambiguation Guide" at <https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07> by Merijn
20:56:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:56:40 <hekkaidekapus> merijn: Time for a ‘Future vs Past Time disambiguation’ gist?
20:57:26 × SupaYoshii quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
20:58:19 <merijn> hekkaidekapus: I'll get right on that after I finish rewriting 8 thesis chapters...before tomorrow 10 AM >.>
20:58:51 <hekkaidekapus> UTC time, oc.
20:59:32 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
20:59:48 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
21:01:20 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
21:02:50 hackage hedis 0.13.1 - Client library for the Redis datastore: supports full command set,pipelining. https://hackage.haskell.org/package/hedis-0.13.1 (k_bx)
21:03:35 <dminuoso> 21:46:49 merijn | hekkaidekapus: It's especially relevant with all of the EU reconsidering daylight savings time in the near future
21:03:43 <dminuoso> Its going to be a very interesting near future
21:04:09 <hekkaidekapus> lol
21:04:09 <dminuoso> Negative leap second, DST changes...
21:04:30 <dminuoso> I reckon we'll reap the benefits in years to come
21:04:39 hekkaidekapus thought dminuoso went for the pun…
21:06:53 × natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
21:07:29 <dminuoso> Is there a typeclass for things that have an empty constructor like Nothing or []?
21:07:41 <merijn> Alternative? :p
21:08:22 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
21:09:18 Aquazi joins (uid312403@gateway/web/irccloud.com/x-ilswyamvtndfxsrg)
21:09:42 <hpc> also Monoid depending on what kind you need
21:09:43 <boxscape> dminuoso https://hackage.haskell.org/package/data-default-0.7.1.1/docs/Data-Default.html#t:Default
21:10:04 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:10:25 <boxscape> I guess Pointed, as well
21:10:40 <boxscape> I guess Pointed, as well
21:10:42 <boxscape> whoops
21:10:44 <boxscape> I wanted to say
21:10:46 <boxscape> wait no
21:10:52 <boxscape> Pointed is different
21:12:33 amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com)
21:13:12 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
21:13:56 <ddellacosta> MonadThrow?
21:13:58 ddellacosta ducks
21:15:48 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
21:20:26 alp__ joins (~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61)
21:20:44 × sagax quits (~sagax_nb@213.138.71.146) (Ping timeout: 272 seconds)
21:21:16 <dminuoso> Mmm I guess Default is that thing
21:24:59 <ryantrinkle> for QuantifiedConstraints, it seems like sometimes it needs a little help; e.g., i have a `type family Object cat a :: Constraint` and `class Object cat a => Object' cat a with instance Object cat a => Object' cat a`, and finally an expression that uses it via a quantified constraint `forall x. obj x => Object' cat x`
21:25:06 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
21:25:17 <ryantrinkle> now if I just try to use `Object cat a` for some particular `a`, it doesn't work
21:25:49 <ryantrinkle> but defining: `with :: forall c r. c => (c => r) -> r` `with x = x`
21:26:01 <ryantrinkle> and prefixing with `with @(Object' cat a)`
21:26:08 <ryantrinkle> now it can find the Object cat a instance
21:26:12 <ryantrinkle> any advice on how to clean this up?
21:26:45 × geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection)
21:26:57 <ryantrinkle> (it's necessary to go through the `class` because the type family can't be partially applied)
21:27:13 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
21:27:45 contiver joins (~contiver@84-115-64-168.wifi.dynamic.surfer.at)
21:30:08 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
21:30:20 conal joins (~conal@64.71.133.70)
21:32:16 × conal quits (~conal@64.71.133.70) (Client Quit)
21:33:17 conal joins (~conal@64.71.133.70)
21:33:23 × conal quits (~conal@64.71.133.70) (Client Quit)
21:34:00 conal joins (~conal@64.71.133.70)
21:34:10 × conal quits (~conal@64.71.133.70) (Client Quit)
21:34:52 conal joins (~conal@64.71.133.70)
21:36:05 × knupfer quits (~Thunderbi@i5E86B463.versanet.de) (Ping timeout: 240 seconds)
21:36:23 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
21:37:02 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
21:37:59 contiver_ joins (~contiver@84-115-64-44.wifi.dynamic.surfer.at)
21:38:34 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
21:40:25 × contiver quits (~contiver@84-115-64-168.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds)
21:40:42 travv0 joins (sid293381@gateway/web/irccloud.com/x-bzeyalubfbhlrrhq)
21:41:00 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
21:42:20 × jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
21:42:36 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds)
21:42:47 × xff0x quits (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) (Ping timeout: 272 seconds)
21:43:57 xff0x joins (~fox@141.98.255.144)
21:49:52 × xff0x quits (~fox@141.98.255.144) (Ping timeout: 272 seconds)
21:50:42 × Cotillion quits (~Cotillion@185.163.110.116) (Remote host closed the connection)
21:51:07 xff0x joins (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd)
21:51:31 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
21:52:09 JavaSucksMan joins (403483ab@64-52-131-171.championbroadband.com)
21:53:25 conal joins (~conal@64.71.133.70)
21:53:25 × conal quits (~conal@64.71.133.70) (Client Quit)
21:53:51 conal joins (~conal@64.71.133.70)
21:55:10 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
21:55:27 <JavaSucksMan> How can I restrict access to the full IO monad while still provide access to things like IORef that, aren't referentially transparent but don't actually do IO (from the OS point of view)?
21:55:27 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
21:55:49 <dolio> Use ST?
21:55:53 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
21:56:21 <koz_> You can also work in PrimMonad I guess?
21:56:34 <JavaSucksMan> I guess,,, and use #RealWorld# to get at IORefs?
21:56:46 <hpc> you'd use STRef
21:57:06 <koz_> I think there's a generalization of *Ref in primitive if you wanna go down the PrimMonad route IIRC.
21:58:51 <JavaSucksMan> PrimMonad looks interesting.... thanks
22:00:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
22:04:42 ephemient joins (uid407513@gateway/web/irccloud.com/x-bhblrmwjykztmyrl)
22:06:50 × fendor quits (~fendor@91.141.2.60.wireless.dyn.drei.com) (Remote host closed the connection)
22:08:59 Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it)
22:10:48 conman1 joins (~conman@185.204.1.185)
22:12:05 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer)
22:13:07 × acidjnk_new quits (~acidjnk@p200300d0c719ff217d005cd8d9846e4e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
22:17:05 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
22:18:16 jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
22:18:58 acidjnk_new joins (~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de)
22:20:10 rprije joins (~rprije@194-193-174-214.tpgi.com.au)
22:20:37 × boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 264 seconds)
22:22:38 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:26:31 justsomeguy joins (~justsomeg@216.186.218.241)
22:26:32 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
22:26:32 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
22:27:28 <dsal> JavaSucksMan: It sounds like you were describing ST.
22:28:33 <monochrom> @quote monochrom Bond
22:28:33 <lambdabot> No quotes match.
22:28:35 vicfred joins (~vicfred@unaffiliated/vicfred)
22:28:58 <dsal> That's pretty deep.
22:29:04 <monochrom> Oh, this:
22:29:08 <monochrom> @quote monochrom 007
22:29:08 <lambdabot> monochrom says: 007 titles for haskellers. fromForeignPtr withCString. You Only lift Twice. Bottoms Are Forever. The Monad with the Pure Function. For Your Types Only. A view to A seq. Licence
22:29:08 <lambdabot> to killThread. iterate Never Dies. unsafePerformIO Is Not Enough.
22:29:41 <monochrom> That last one may have been better off as The RealWorld# Is Not Enough
22:30:53 livvy joins (~livvy@gateway/tor-sasl/livvy)
22:30:57 <maerwald> everything is IO. GHC just creates a perfect illusion for us
22:31:51 <monochrom> I have a feeling that it's the opposite, IO is an illusion.
22:32:08 <maerwald> that's what academics like to believe :p
22:33:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:34:31 <monochrom> Rumour goes that if you assume an anti de Sitter space and do a holographic projection of the world to a surface, then the IO monad and the IO comonad are unified.
22:34:49 <dminuoso> The IO comonad? ...
22:35:00 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 265 seconds)
22:35:01 <monochrom> I'm making it up. >:)
22:35:03 <erisco> oh yeah I have one of those on my coffee table
22:35:42 <monochrom> But a comonad allows you to do the much-wanted M a -> a
22:35:44 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
22:35:50 <dminuoso> % :t unsafePerformIO
22:35:50 <yahb> dminuoso: IO a -> a
22:35:53 dminuoso chuckles
22:35:58 <erisco> it is true that you can use comonads to add purity to impure languages
22:36:16 <erisco> so then it is moreso a question of what you like by default, like strictness
22:37:57 contiver__ joins (~contiver@84-115-64-108.wifi.dynamic.surfer.at)
22:38:08 × carlomagno quits (~cararell@148.87.23.5) (Remote host closed the connection)
22:38:32 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Remote host closed the connection)
22:38:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
22:38:59 gproto23 joins (~gproto23@unaffiliated/gproto23)
22:39:59 <erisco> I feel like "everything is" statements are as broad as they are meaningless
22:40:36 <maerwald> they aren't really statements
22:40:49 <monochrom> Yes if you restrict to those that are really, seriously, provably true.
22:41:10 × contiver_ quits (~contiver@84-115-64-44.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds)
22:41:22 hackage intricacy 0.7.2.1 - A game of competitive puzzle-design https://hackage.haskell.org/package/intricacy-0.7.2.1 (mbays)
22:41:22 <monochrom> If you allow them to be statistically true of a majority, then you have useful statements.
22:43:36 <monochrom> But why do you like to suddenly discuss "everything is" sentences?
22:43:50 × xff0x quits (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) (Ping timeout: 264 seconds)
22:44:03 <maerwald> Because programmers generally have a hard time with non-formal truths? :p
22:44:19 xff0x joins (~fox@2001:1a81:524c:7b00:6035:c577:b880:b950)
22:44:35 <erisco> it started with "everything is IO" and then continued with the negation
22:44:38 <arw_> yes. but even formally, most "everything is" sentences will be tautologies ala "everything is isomorphic to itself"
22:44:44 <maerwald> erisco: and both is true
22:44:57 <erisco> when A and not A are both true, what do you have
22:45:15 <maerwald> erisco: there's more than just classical logic
22:45:37 <erisco> well I'm asking you, I didn't make any logical judgement about it :P
22:46:36 <monochrom> I think programmers have no trouble believing and insisting non-formal truths like "pure FP is impractical" and "non-tail recursion uses call stack space".
22:47:06 <maerwald> erisco: https://aeon.co/essays/the-logic-of-buddhist-philosophy-goes-beyond-simple-truth
22:47:14 <monochrom> Or maybe that's exactly what you mean.
22:47:23 × LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
22:47:44 <maerwald> it's also formally explained there, kinda
22:48:11 carlomagno joins (~cararell@148.87.23.4)
22:48:25 Rudd0^ joins (~Rudd0@185.189.115.108)
22:48:32 × Rudd0 quits (~Rudd0@185.189.115.108) (Read error: Connection reset by peer)
22:48:45 <JavaSucksMan> When A and not A are both true, you have.....trivial completeness ;-)
22:49:32 <maerwald> https://en.wikipedia.org/wiki/Many-valued_logic
22:49:55 <JavaSucksMan> or paraconsistant logics
22:50:16 <erisco> if you can assume A and successfully describe the world, and, as a separate endeavour, assume not A and also successfully describe the world, what importance does A or not A have
22:50:39 <maerwald> erisco: the part that the reader missed :D
22:51:02 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
22:51:09 <maerwald> if you think about it, it's gone
22:51:38 <maerwald> the paradox of the ineffible
22:52:09 <maerwald> or just "aesthetic truth" to be more classic
22:52:37 <maerwald> because again: none of those were actually statements
22:52:47 × nango` quits (~user@2001:4bb8:2c0:f87:3991:44c0:3223:4b98) (Ping timeout: 260 seconds)
22:55:38 <erisco> "aesthetic truth" sounds like a euphemism for politics
22:55:49 <maerwald> no
22:56:24 <maerwald> there's a few centuries of philosophy research about it :p
22:56:27 <monochrom> "reality" is.
22:56:55 × oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds)
22:57:21 monochrom contemplates "what would go into a book titled Political Haskell?"
22:57:31 <maerwald> I think it's important to talk about non-formal properties of e.g. languages as well. Such a property is how it "feels". And if you ask most programmers, it's actually something you can talk about
22:58:12 <monochrom> Yes. For example "productivity".
22:58:27 <monochrom> "power"
22:58:44 <monochrom> "readability"
22:59:52 <erisco> why did my blood pressure go up
23:00:23 <maerwald> Such discussions have a tendency to derail into gibberish... (are we there yet?), but formal discussions have their own as well: bikeshedding.
23:00:24 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
23:00:52 <erisco> oh there is nothing like a perfectly rational, coherent, formal discussion about absolutely nothing significant
23:01:00 <monochrom> Yes, we have long understood PEBKAC
23:01:05 <MarcelineVQ> re: feeling. haskell's use of whitespace has ruined me for other languages
23:01:07 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
23:01:40 <erisco> but on the other hand, I feel like these feelings (hah) need to be put in their place
23:01:42 <MarcelineVQ> all I can use now is haskell-like things
23:02:10 <erisco> because it seems to be, and I've encountered this, that some project their preferences as matters of fact
23:02:38 <erisco> like where you ought to put your commas and braces and whether it is okay to have single-letter variable names and how many lines per file and on and one
23:02:57 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-ubahtloahdzifjhq) (Quit: Connection closed for inactivity)
23:02:57 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
23:03:27 <erisco> if I like putting my commas first rather than last on a line and someone says it is unreadable, that is their experience of it
23:03:39 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds)
23:04:05 <maerwald> yes, commas have caused engineering teams to split up :D
23:04:23 <erisco> are you leading or trailing?
23:04:38 <monochrom> This is why SPJ is leading. >:)
23:05:24 <ski> i think i always did leading, because of the aesthetics
23:05:32 <ski> (i like to line things up)
23:05:40 mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
23:05:41 <maerwald> My policy wrt formatting is similar to the WTFPL license text
23:06:07 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
23:06:42 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:07:18 <maerwald> I barely even care what formatting ppl use in PRs... I mean. If you're an open source project and someone contributes... it's time for celebration, screw formatting :p
23:07:26 <monochrom> Is that basically centre-align every line, except left-align for the last line?
23:07:54 <erisco> my first foray into programming didn't involve whitespace
23:07:56 <ski> erisco : "when A and not A are both true, what do you have" -- linear logic ?
23:07:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:08:27 conal joins (~conal@64.71.133.70)
23:08:29 <MarcelineVQ> human involvement
23:09:35 <erisco> then a mentor showed me how to format my html elements and boy was web development so much easier
23:09:38 <maerwald> if you calculated the times engineering teams have discussed non-sente topics like formatting, maybe you could calculate the wasted time or the economical damage :p
23:09:43 <erisco> practically took all the challenge out!
23:12:21 hackage pg-extras 0.0.1 - PostgreSQL database performance insights. https://hackage.haskell.org/package/pg-extras-0.0.1 (pawurb)
23:13:29 <monochrom> https://twitter.com/HisCursedness/status/788690145822306304
23:14:00 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:14:44 <xerox_> that's beautiful modulo a couple columns
23:15:56 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:16:27 <maerwald> monochrom: lol, ok... I guess I do care about it *somewhat*
23:16:28 <erisco> when you take leading delimiters to their ultimate conclusion you also lead with semicolons
23:16:36 conal joins (~conal@64.71.133.70)
23:16:41 <erisco> I had a hard time seriously staying on board with that, though I tried :P
23:16:44 × conal quits (~conal@64.71.133.70) (Client Quit)
23:17:29 <monochrom> That's what SPJ does. Lead with semicolons. And the leading semicolons are vertically aligned with { and }
23:17:30 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
23:17:49 <monochrom> <pun>Follow the lead of SPJ!</pun>
23:18:12 <erisco> really? well great minds and all that
23:18:27 <maerwald> there should be a haskell formatter that turns your code into SPJ style
23:18:42 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
23:19:09 <monochrom> The trouble is that only SPJ does it, in all of the Haskell community. So yeah we simply call it the SPJ style.
23:19:47 <xerox_> always liked that style
23:19:54 <monochrom> I used to do that a bit, but only because an old generation of auto-indentation editor plugin was dumb.
23:19:59 <erisco> I have a style I don't see others using
23:19:59 × contiver__ quits (~contiver@84-115-64-108.wifi.dynamic.surfer.at) (Ping timeout: 260 seconds)
23:20:24 <erisco> it is kind of regressive, but it started with whatever editor I was using at the time as a workaround
23:20:25 <maerwald> we need AI in formatters
23:20:34 <erisco> now I just like it
23:21:07 <erisco> here you can see by example https://hackage.haskell.org/package/control-dotdotdot-0.1.0.1/docs/src/Control-DotDotDot.html#DotDotDot
23:21:37 <dolio> Dissapointing that almost no one replying to that tweet recognized that the problem is that the compiler requires all that extra garbage to be added to the code that is already easy to understand.
23:21:42 <monochrom> Yes please Markov chain that tells me how many leading spaces I need for the next line. :)
23:22:03 <xerox_> yuck
23:22:44 <monochrom> dolio, that's a doctrine of the layout-insensitive religion.
23:23:29 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
23:23:29 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
23:23:35 <monochrom> Either that, or layout parsing is really tricky.
23:23:36 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:24:06 <dolio> It probably is when you write your parsers in C like most people do.
23:24:16 <dolio> That's why they have compiler books that are like 70% parsing.
23:24:18 <hekkaidekapus> The code in that tweet is fine. The right margin should be the place to stuff boilerplate; if you don’t like boilerplate, increase the column count where the margin starts. By the way, 80 or 120? :p
23:24:22 <maerwald> ok, I'm a believer in inconsistent formatting... I don't mind if ppl exercise different styles in one codebase. Because it's all *information*. Why would you hide it? Scared your pattern recognition apparatus overloads? That's more likely to happen due to the actual code
23:25:02 Varis joins (~Tadas@unaffiliated/varis)
23:25:23 × wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds)
23:25:28 <erisco> my elitism is saying it is people who have only experienced one style, either because they are new or stubborn
23:25:47 <monochrom> newborn or stubborn \∩/
23:25:59 <hekkaidekapus> :d
23:26:16 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
23:26:39 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
23:26:42 <erisco> I don't know how you can care that much once you have some practice in a variety of different syntax styles
23:26:56 <erisco> and, lord help you, mathematics
23:27:15 <alx741> hello all, I think some months ago I read about a framework (new one?) that advocates for server-side rendering but also provides a list of principles of what it believes makes for good modern web frameworks (server side rendering being one of them), does anyone knows which framework that would be? I'm really after that list of principles but can't recall its name :/
23:27:40 <maerwald> I think it's the hope that consistent formatting will somehow make the team more productive...
23:27:42 <monochrom> I say that layout parsing is tricky because the rules in the Haskell Report are almost as long as C++ rules for disambiguating multiple inheritance of a comon field, which is infamous for being tricky and complex and "no one actually understands in full".
23:27:53 <sondr3> alx741: IHP maybe?
23:27:56 <Axman6> alx741: maybe miso?
23:28:04 <Axman6> maybe Maybe?
23:28:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
23:28:17 <sondr3> Either maybe
23:28:44 conal joins (~conal@64.71.133.70)
23:29:27 <alx741> sondr3: I remember the web page of it had such a list's name, but IHP doesn't so perhaps they've changed it?
23:29:59 <alx741> Axman6: I've checked but there is no mention of such a list
23:30:18 <maerwald> so the language is sound, but the parser not? :D
23:30:51 <maerwald> purely functional programming language, that should parse... mostly
23:30:53 <alx741> I remember it had a name, similar to how OOP has the 'SOLID' principles (it was a nice sounding name), I can't remember and it's driving me crazy :p
23:31:07 <erisco> is the list longer or shorter than the list of physicists who truly understand quantum mechanics?
23:31:29 <dolio> Haskell's layout sensitivity is a lot more complicated than the sensitivity in that tweet.
23:31:51 <erisco> oh wait, I merged conversations
23:31:54 × Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds)
23:32:17 <Axman6> alx741: was it PHP, Purescript, Haskell, Postgresql?
23:32:21 <erisco> thought that was a list of people who fully understood C++ parsing
23:32:55 <monochrom> Ah OK fair, dolio.
23:33:03 <sondr3> Axman6: lol, nice acronym
23:33:17 <dolio> I guess a problem is people only knowing Python as an example. If they did know Haskell, they could realize that languages could adopt optional layout sensitivity to avoid breaking existing code, so there's no excuse for perpetuating the braces and semicolons.
23:33:26 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:33:29 <Axman6> MPHPGA - Make PHP GReat Again
23:33:38 <dolio> The requirement, that is.
23:34:40 <alx741> Axman6: I believe it was a Haskell web framework, hence I'm asking here... but I do realize that could also be a memory fluke
23:35:03 <Axman6> it wasn't yesod?
23:35:43 <alx741> Axman6: pretty sure it wasn't because that's what I currently use
23:36:16 <alx741> Oh well maybe I remember on my sleep :)
23:36:27 <alx741> *I'll
23:38:24 × irc_user quits (uid423822@gateway/web/irccloud.com/x-qjzncdzdidsoxfjl) (Quit: Connection closed for inactivity)
23:38:45 <monochrom> Yes, I wish Python supported {;] so I could write one-liners on the REPL when it's a really short one-liner. The advantage of one-liners on the REPL, when it's short, is that I can actually edit any of it before I press enter.
23:38:59 Franciman joins (~francesco@host-95-251-103-60.retail.telecomitalia.it)
23:39:43 <monochrom> If the REPL forces you to press enter 5 times, it means you're screwed whenever you realize you made a typo before the 1st enter.
23:39:56 <Axman6> need more heredocs
23:41:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
23:41:59 <erisco> just deconflict the keys
23:42:17 <erisco> shift+enter has been a way to put newlines in text fields
23:42:17 <sondr3> Anyone know of a good way to go from a char to its UTF8 symbol? E.g. '\955' to λ
23:42:27 <shachaf> monochrom: The other option would be an environment that supports multiple-line inputs and still has the advantages of a REPL.
23:42:39 <shachaf> sondr3: UTF-8 as in the encoding in bytes?
23:42:45 <Axman6> sondr3: I don't understand the question
23:43:10 × Franciman quits (~francesco@host-95-251-103-60.retail.telecomitalia.it) (Client Quit)
23:43:29 <erisco> "UTF8 symbol" isn't a thing I have heard of
23:43:43 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
23:43:46 <sondr3> Uh, so I have a bunch of characters that I'm reading, and I want to go from their decimal value to its glyph
23:44:06 <Axman6> how are you reading them?
23:44:10 <erisco> so you have a ttf or something?
23:44:12 <sondr3> Megaparsec :D
23:44:21 <monochrom> You know what, show actual code.
23:44:35 <monochrom> @where paste
23:44:35 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
23:45:01 × Amras quits (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
23:45:13 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
23:45:19 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca)
23:45:50 <monochrom> But I guess a possible short answer is that if you use putChar or putStr or putStrLn you will see your λ alright, if you use print you don't, and that's by design.
23:46:19 <sondr3> I'm writing a Scheme implementation and it writes characters as `\#VAL` (or `\#xHEX`) and uses this as an example: `#\x03BB ;λ(if character is supported)`
23:46:27 <monochrom> If you use show you don't either, and print uses show, that's why.
23:47:07 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:47:07 <monochrom> Actually I think I can use yahb to show you. But you should also do your experiment in ghci to confirm.
23:47:18 <monochrom> % print '\955'
23:47:18 <yahb> monochrom: '\955'
23:47:23 <monochrom> % putChar '\955'
23:47:23 <yahb> monochrom: λ
23:47:24 <erisco> it just sounds like there is confusion on encodings versus code points versus glyphs
23:47:40 <monochrom> Yeah there's also that. But that would be a 1-hour lecture.
23:47:42 <erisco> and maybe the answer can be found in understanding what each of those are
23:47:57 <erisco> there is that Joel Spolsky article
23:48:12 <monochrom> a 1-hour lecture that could be saved by reading joeysoftware's article on this topic, but who still remembers there is such a thing
23:48:15 <sondr3> ¯\_(ツ)_/¯
23:48:29 <nitrix> Not very Haskell-y but I can't think of a better place to ask: Is there terminology to distinguish whether two things compare equal after evaluation vs. them being actually the same expression?
23:48:41 <monochrom> People now only know that emojies "just work"
23:49:25 <erisco> they got added to computers about a decade ago, weren't you aware?
23:49:47 <nitrix> As in, `1 + 1 = 2`. Clearly there's "equality" but these two things isn't the same. I don't know if mathematics/logic cares to name those?
23:49:50 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
23:49:53 <erisco> that was roughly my experience when I first saw one on a mobile phone :P
23:50:02 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
23:50:15 alice_ joins (~alice@209.131.251.182)
23:50:31 <nitrix> I guess I'm asking for something beta-reduction related.
23:50:39 <alice_> how does ghc garbage collection work
23:50:53 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
23:51:21 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
23:51:49 <hekkaidekapus_> > chr 955 -- sondr3
23:51:51 <lambdabot> '\955'
23:51:59 <hekkaidekapus_> > ord 'λ'
23:52:02 <lambdabot> 955
23:52:03 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
23:52:06 <erisco> nitrix, there definitional equality which would say 2 = 1 + 1 only when 2 is defined by 1 + 1
23:53:17 <erisco> and a common name for the other sort is slipping my mind
23:53:28 <nitrix> erisco, So the terminology I'm after is "definitional equality"? What are the other options, judgmental equality?
23:53:30 <MarcelineVQ> nitrix: extentional equality
23:53:57 <nitrix> erisco, And, Google just happily told me what I'm after. Apparently I want to look into "homotopy theory" :D
23:54:08 <MarcelineVQ> Though that's not specifically about if they're evaluated first
23:54:11 <erisco> well there are all sorts of equalities
23:54:37 <MarcelineVQ> nitrix: https://en.wikipedia.org/wiki/Extensionality would be my first stop
23:54:37 <sondr3> hekkaidekapus_: Is there a way to do that in reverse? I haven't been able to find anything/figure it out
23:54:42 <nitrix> MarcelineVQ, I think you're closer. I'm doing predicate logic.
23:55:16 <hekkaidekapus_> sondr3: What reversal?
23:55:41 <Axman6> alice_: that's a fairly broad question, do you have a more specific question?
23:57:03 <erisco> I find univalence particularly mind-bending and pray one day I have the motivation to learn more
23:57:29 <MarcelineVQ> erisco: try cubical agda :>
23:57:52 <MarcelineVQ> https://gallais.github.io/blog/first-cubical-experiment.html
23:57:55 <sondr3> hekkaidekapus_: How do I do what putChar does only `Char -> String` instead of `IO ()`. I want to use this in my Show instance for characters
23:58:02 <erisco> well I'd want to understand more basically what role cubical type theory is playing
23:58:07 × mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
23:58:14 <MarcelineVQ> it's like regular type theory but it's a cube
23:58:15 <Axman6> :t (:"")
23:58:17 <lambdabot> Char -> [Char]
23:58:31 <erisco> ah, can't believe I didn't think of it!
23:58:45 <MarcelineVQ> yes the tough things are sometimes obvious in retrospect
23:59:07 <nitrix> MarcelineVQ, Yeah, I think you nailed it. Extensional vs Intentional equality. Thank you sir :)
23:59:33 <erisco> it seems like, just from looking at univalence, that that really is the fundamental equality worth concern over, as programmers

All times are in UTC on 2020-11-29.