Home liberachat/#haskell: Logs Calendar

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

00:01:31 <seydar> please don't be mad... but i couldn't come up with a type signature to work, so i got rid of the signature and just let the compiler figure it out for me
00:01:32 <EvanR> no instance of Integral Double means Double has no Integral instance, which maps to "you can't do long division with Double"
00:01:57 <EvanR> "unless you implement the instance yourself"
00:02:02 <monochrom> Then what is the type sig the compiler figured out?
00:02:29 <monochrom> I am mad but I don't have remote desktop access.
00:03:48 <EvanR> best to double check the compiler arrived at the same conclusion as you-at-your-best
00:06:39 <sm> seydar: again, excellent haskell dev technique, no problem with that!
00:06:43 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
00:07:00 <sm> vs code will insert that for you if you like
00:07:19 <EvanR> oh man, I should learn vs code
00:08:20 <seydar> limit :: Ord a => a -> a -> a -> a
00:08:33 <seydar> (limit low high value -> result)
00:09:06 <EvanR> so basically a clamp
00:10:10 <monochrom> So you are saying "limit 0 18 (floor foo) :: Double". Therefore a=Double. Therefore floor foo :: Double. Therefore you are asking floor to return Double not Int.
00:10:49 <EvanR> floor is funny in that it can't turn a Double into a Double :(
00:10:53 <EvanR> unlike math.h
00:12:48 <monochrom> C's floor probably is designed to just map to a machine instruction, and most machine's floor instruction is probably double->double, and C does not aspire to think about it.
00:13:50 <monochrom> Although, both ways are inconvenient half of the time.
00:14:43 <dons> morning all. happy friday
00:14:54 <monochrom> double->int has the up side of using types to tell you "no fractional part". double->double has the up side of using types to tell you "the answer always fits in the range".
00:16:23 <monochrom> However, in Haskell, you're supposed to do Double->Integer therefore there is no out-of-range UB problem.
00:17:06 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
00:17:17 <EvanR> but my premature optimizations
00:18:15 <EvanR> when you really do want Double->Double, premature or not, it's annoying
00:18:32 <monochrom> This is why we need dependent predicate subtyping of Liquor Haskell to prove that your output fits in 4 bits therefore you are allowed Double-Nibble.
00:18:51 <monochrom> And dependent linear typing to prove that destructive update is OK too.
00:19:42 × mmhat quits (~mmh@2001:4090:a246:806c:ee08:6bff:fe09:5315) (Quit: WeeChat 3.5)
00:19:47 xff0x joins (~xff0x@om126167084162.29.openmobile.ne.jp)
00:19:57 <monochrom> We are doing EGA 16-colour image processing, therefore 4 bits are enough, right? >:)
00:20:38 <EvanR> 4 bit color palettes can be pretty cool
00:25:33 × CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:26:11 kaipei joins (~Kaiepi@156.34.47.253)
00:28:59 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
00:29:28 <dmj`> Liquor Haskell ? go on.
00:29:48 × kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 276 seconds)
00:30:17 <monochrom> It's a 100-proof assistant >:)
00:30:45 <monochrom> <monochrom> "Liquor Haskell combines dependent typing, dependent refinement typing, dependent predicate subtyping, and dependent linear typing."
00:31:03 <monochrom> I forgot "dependent effect typing" there.
00:31:30 jakalx joins (~jakalx@base.jakalx.net)
00:32:08 <monochrom> Start with https://ircbrowse.tomsmeding.com/browse/lchaskell?id=540506#trid540506 for the whole conversation :)
00:34:12 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 248 seconds)
00:34:14 <seydar> https://paste.tomsmeding.com/yKQNirHg
00:34:42 <seydar> I'm getting NaN when r, g, b are small values
00:34:48 <seydar> is there a better way to phrase this function?
00:35:13 <monochrom> If NaN, check that you are not doing sqrt (-0.001) for example.
00:35:21 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:35:31 <monochrom> I phrased it wrong.
00:35:32 <seydar> i 10000% most definitely am
00:35:48 <seydar> some tiktok influencer told me to do it
00:36:00 <monochrom> Clearly sqrt (-0.0001) is the sole source of NaN. OK, either that, or it's sqrt NaN in the first place.
00:36:51 <seydar> this would explain why the C code does like copysignf(pow(fabsf(...
00:39:20 <monochrom> I actually had experience debugging black pixels that turned out to be caused by acos(sqrt( dot product that came out as -0.001 because floating point)) and then some C compiler on some platform decided that "x = (int)NaN;" meant "x = 0;" or something.
00:39:54 <seydar> HOLY SHIT i did it
00:40:01 <seydar> this has been a team effort
00:40:10 <seydar> thank you all for helping me grow into a better programmer and haskeller
00:46:15 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:46:15 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:46:15 wroathe joins (~wroathe@user/wroathe)
00:47:56 <seydar> I humbly submit my code for review: https://paste.tomsmeding.com/ElLdaMKb
00:50:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
00:54:10 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:57:15 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Remote host closed the connection)
00:57:30 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
01:13:43 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
01:18:14 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
01:22:58 × x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
01:29:48 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Quit: leaving)
01:35:30 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
01:37:06 frost joins (~frost@user/frost)
01:37:28 andrey__ joins (~andrey@p200300dbcf09f8009147dcedbd430909.dip0.t-ipconnect.de)
01:40:13 × andrey_ quits (~andrey@p200300dbcf1053000b1abd83a6152638.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
01:44:43 <sm> who has read Haskell from the Very Beginning, https://www.amazon.com/dp/095767113X ? it looks good
01:49:55 <sm> "For Whitington to both mention and omit monads is quite irresponsible. He has written what I'd consider the standard (but incomplete) introduction to Haskell for non-programmers, but at the same time, he's condemned his readers to monad obsessions as he's taken readers all the way to the gate, told them they exist, and abandoned them there.
01:49:55 <sm> Despite the above flaws, this is a very good book."
01:49:56 × kaskal quits (~kaskal@2001:4bb8:2e0:b5bd:e3c0:d71b:f32:84d8) (Quit: ZNC - https://znc.in)
01:50:11 kaskal joins (~kaskal@089144207160.atnat0016.highway.bob.at)
01:50:14 × fluxit quits (~fluxit@techsmix.net) (Quit: Bye!)
01:52:18 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
02:02:00 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 250 seconds)
02:04:37 × wroathe quits (~wroathe@user/wroathe) (Read error: Connection reset by peer)
02:04:52 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
02:07:03 × michalz quits (~michalz@185.246.204.101) (Ping timeout: 260 seconds)
02:11:25 gpncarl joins (~gpncarl@222.249.231.5)
02:14:33 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:14:33 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:14:33 finn_elija is now known as FinnElija
02:16:25 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
02:20:23 zaquest joins (~notzaques@5.130.79.72)
02:26:53 <monochrom> Sounds like the recent Dune movie. >:)
02:29:40 <monochrom> "Villeneuve has taken viewers all the way to the gate of the Fremen community, told them they exist, and abandoned them there." >:)
02:43:58 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:45:12 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:46:27 Guest4318 joins (~Polo@user/polo)
02:48:36 jespada joins (~jespada@146.70.119.114)
02:50:45 × jespada_ quits (~jespada@185.195.232.138) (Ping timeout: 260 seconds)
02:54:47 × td_ quits (~td@muedsl-82-207-238-115.citykom.de) (Ping timeout: 256 seconds)
02:56:39 td_ joins (~td@94.134.91.66)
02:56:50 Guest4318 is now known as yous
02:57:28 <sm> very true :)
02:58:20 <sm> @where books
02:58:20 <lambdabot> https://www.extrema.is/articles/haskell-books http://www.vex.net/~trebla/haskell/learn-sources.html, see also @where LYAH, RWH, YAHT, SOE, HR, PIH, TFwH, wikibook, PCPH, HPFFP, HTAC, TwT, FoP, PFAD,
02:58:20 <lambdabot> WYAH, non-haskell-books
02:59:28 <sm> @where LYAH
02:59:28 <lambdabot> http://www.learnyouahaskell.com/
02:59:28 × xff0x quits (~xff0x@om126167084162.29.openmobile.ne.jp) (Read error: Connection reset by peer)
02:59:53 <sm> @where+ HFTVB https://www.extrema.is/articles/haskell-books/haskell-from-the-very-beginning
02:59:53 <lambdabot> Okay.
03:01:00 <sm> @where+ books https://www.extrema.is/articles/haskell-books http://www.vex.net/~trebla/haskell/learn-sources.html, see also @where LYAH, RWH, YAHT, HFTVB, SOE, HR, PIH, TFwH, wikibook, PCPH, HPFFP, HTAC, TwT, FoP, PFAD, WYAH, non-haskell-books
03:01:01 <lambdabot> Done.
03:10:28 × yous quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:20:19 arjun joins (~arjun@user/arjun)
03:24:25 xff0x joins (~xff0x@om126167084162.29.openmobile.ne.jp)
03:30:01 × xff0x quits (~xff0x@om126167084162.29.openmobile.ne.jp) (Ping timeout: 256 seconds)
03:40:36 Guest8867 joins (~Polo@user/polo)
03:50:58 Guest8867 is now known as Polo
03:52:42 × Ram-Z_ quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 246 seconds)
03:54:19 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
03:56:37 seydar joins (~seydar@154-27-113-252.starry-inc.net)
03:56:44 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Client Quit)
04:12:36 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
04:14:45 × jao quits (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 246 seconds)
04:18:55 notzmv joins (~zmv@user/notzmv)
04:19:18 × raym quits (~raym@user/raym) (Quit: rebooting...)
04:23:23 raym joins (~raym@user/raym)
04:24:47 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:27:45 × kaipei quits (~Kaiepi@156.34.47.253) (Quit: Leaving)
04:28:12 Kaiepi joins (~Kaiepi@156.34.47.253)
04:28:26 Polo joins (~Polo@user/polo)
04:29:09 coot joins (~coot@213.134.190.95)
04:29:25 asivitz joins (uid178348@id-178348.tinside.irccloud.com)
04:37:02 bahamas joins (~lucian@84.232.141.55)
04:37:13 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
04:42:23 mvk joins (~mvk@2607:fea8:5ce3:8500::aa1d)
04:46:02 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:50:08 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:54:01 Vajb joins (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56)
05:01:56 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:11:50 mbuf joins (~Shakthi@223.184.62.182)
05:14:15 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 260 seconds)
05:19:32 chomwitt joins (~chomwitt@2a02:587:dc19:d600:8f70:f0f3:1c35:cd8a)
05:21:03 Polo joins (~Polo@user/polo)
05:22:46 <juhp[m]> geekosaur: https://paste.tomsmeding.com/zhha2cRX is a minimal example of "error: (if ... then ... else ...)-syntax in pattern"
05:23:11 searemind joins (~searemind@122.161.49.191)
05:23:23 × searemind quits (~searemind@122.161.49.191) (Remote host closed the connection)
05:27:04 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
05:27:37 chexum joins (~quassel@gateway/tor-sasl/chexum)
05:30:35 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
05:30:57 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
05:31:15 × zyklotomic quits (~ethan@res388d-128-61-89-205.res.gatech.edu) (Ping timeout: 260 seconds)
05:32:58 zyklotomic joins (~ethan@res380d-128-61-86-102.res.gatech.edu)
05:33:33 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:35:38 Polo joins (~Polo@user/polo)
05:36:55 × jargon quits (~jargon@174-22-206-112.phnx.qwest.net) (Remote host closed the connection)
05:37:03 × Polo quits (~Polo@user/polo) (Client Quit)
05:39:15 Polo joins (~Polo@user/polo)
05:40:14 michalz joins (~michalz@185.246.204.101)
05:47:28 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
05:51:04 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:00:23 agumonkey joins (~user@88.163.231.79)
06:00:35 Polo joins (~Polo@user/polo)
06:06:20 odnes joins (~odnes@5-203-246-15.pat.nym.cosmote.net)
06:08:59 × phma quits (~phma@2001:5b0:211f:67e8:28ee:b8ea:db61:4883) (Read error: Connection reset by peer)
06:10:04 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
06:10:15 chexum joins (~quassel@gateway/tor-sasl/chexum)
06:12:26 phma joins (~phma@231.sub-174-212-167.myvzw.com)
06:12:52 × mvk quits (~mvk@2607:fea8:5ce3:8500::aa1d) (Ping timeout: 248 seconds)
06:16:17 × echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
06:17:35 echoreply joins (~echoreply@45.32.163.16)
06:18:51 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 276 seconds)
06:19:04 Batzy_ is now known as Batzy
06:24:26 mikoto-chan joins (~mikoto-ch@84.199.144.234)
06:24:51 alp_ joins (~alp@user/alp)
06:25:35 × renzhi quits (~xp@2607:fa49:6500:b100::78de) (Ping timeout: 256 seconds)
06:30:07 Maxdamantus joins (~Maxdamant@user/maxdamantus)
06:31:32 bahamas joins (~lucian@84.232.141.55)
06:34:57 lortabac joins (~lortabac@2a01:e0a:541:b8f0:f12b:6d29:e790:1b4f)
06:35:25 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:37:20 renzhi joins (~xp@2607:fa49:6500:b100::3c88)
06:39:36 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:39:59 Polo joins (~Polo@user/polo)
06:44:48 dextaa4 joins (~dextaa@user/dextaa)
06:47:11 × dextaa4 quits (~dextaa@user/dextaa) (Remote host closed the connection)
06:49:00 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 240 seconds)
06:49:22 dextaa4 joins (~dextaa@user/dextaa)
06:51:16 × Polo quits (~Polo@user/polo) (Killed (osmium.libera.chat (Nickname regained by services)))
06:51:23 Polo joins (~Polo@user/polo)
06:51:48 xaotuk joins (~sasha@net9-32-245-109.mbb.telenor.rs)
06:51:55 acidjnk joins (~acidjnk@p200300d0c7068b349c270144d8822819.dip0.t-ipconnect.de)
06:53:29 × jamestmartin quits (~james@jtmar.me) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
06:53:38 jamestmartin joins (~james@jtmar.me)
06:54:52 fendor joins (~fendor@91.141.58.111.wireless.dyn.drei.com)
07:02:10 gehmehgeh joins (~user@user/gehmehgeh)
07:02:11 × phma quits (~phma@231.sub-174-212-167.myvzw.com) (Read error: Connection reset by peer)
07:05:05 phma joins (phma@2001:5b0:211c:bd68:1a30:3d9:b27f:d715)
07:06:12 × Polo quits (~Polo@user/polo) (Ping timeout: 248 seconds)
07:09:09 Polo joins (~Polo@user/polo)
07:09:30 dostoevsky joins (~5c42c5384@user/dostoevsky)
07:14:48 chele joins (~chele@user/chele)
07:15:32 <Athas> I could swear that cabal is faster at building than stack.
07:16:27 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds)
07:16:30 × chele quits (~chele@user/chele) (Remote host closed the connection)
07:16:47 chele joins (~chele@user/chele)
07:16:51 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
07:17:48 × agumonkey quits (~user@88.163.231.79) (Ping timeout: 246 seconds)
07:23:21 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:26:00 Polo joins (~Polo@user/polo)
07:27:07 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:8a52:6111:fb65:b9eb) (Remote host closed the connection)
07:29:47 ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:76e8:584c:bd55:70ba)
07:30:28 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
07:34:08 <maerwald[m]> Athas: I don't think so
07:34:37 <maerwald[m]> cabal repl, cabal run etc are all slower
07:35:14 <maerwald[m]> Cabal frequently attempts rebuilds although there's nothing to rebuild and then wastes a lot of time
07:35:19 Ether17 joins (~Ether17@45.248.151.237)
07:35:41 <Athas> But I think it does less poking around before starting work.
07:35:44 <Athas> The latency is much lower.
07:36:02 <maerwald[m]> Possible, might depend on your stack config
07:36:07 × Ether17 quits (~Ether17@45.248.151.237) (Client Quit)
07:36:24 <maerwald[m]> Stack does shenanigans with sqlite DBs and GHC installation before it starts
07:36:38 <Athas> Yes, I suspect that is the reason.
07:38:20 <maerwald[m]> Try `system-ghc: true`
07:38:27 <Athas> No need, I use cabal now.
07:45:08 × xaotuk quits (~sasha@net9-32-245-109.mbb.telenor.rs) (Ping timeout: 248 seconds)
07:46:01 × fendor quits (~fendor@91.141.58.111.wireless.dyn.drei.com) (Remote host closed the connection)
07:46:14 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:46:36 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 276 seconds)
07:47:03 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
07:48:15 machinedgod joins (~machinedg@24.105.81.50)
07:51:51 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
07:52:51 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:54:30 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
07:54:35 × hsw quits (~hsw@112-104-144-236.adsl.dynamic.seed.net.tw) (Quit: Leaving)
07:57:17 × machinedgod quits (~machinedg@24.105.81.50) (Remote host closed the connection)
07:58:22 machinedgod joins (~machinedg@24.105.81.50)
08:01:02 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:01:32 × dextaa4 quits (~dextaa@user/dextaa) (Remote host closed the connection)
08:05:22 dextaa4 joins (~dextaa@user/dextaa)
08:08:54 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Remote host closed the connection)
08:11:59 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
08:13:47 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
08:18:27 vpan joins (~0@212.117.1.172)
08:18:27 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
08:22:19 xff0x joins (~xff0x@om126253182187.31.openmobile.ne.jp)
08:29:42 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Remote host closed the connection)
08:30:42 kritzefitz joins (~kritzefit@debian/kritzefitz)
08:39:00 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:39:35 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
08:45:07 __monty__ joins (~toonn@user/toonn)
08:47:40 bahamas joins (~lucian@84.232.141.55)
08:48:15 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
08:48:30 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
08:48:47 img joins (~img@user/img)
08:50:44 × xff0x quits (~xff0x@om126253182187.31.openmobile.ne.jp) (Ping timeout: 248 seconds)
08:54:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
09:00:09 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: You have been kicked for being idle)
09:08:41 × dextaa4 quits (~dextaa@user/dextaa) (Quit: Ping timeout (120 seconds))
09:08:52 dextaa4 joins (~dextaa@user/dextaa)
09:09:24 × zyklotomic quits (~ethan@res380d-128-61-86-102.res.gatech.edu) (Ping timeout: 248 seconds)
09:11:17 zyklotomic joins (~ethan@res380d-128-61-83-67.res.gatech.edu)
09:13:00 × odnes quits (~odnes@5-203-246-15.pat.nym.cosmote.net) (Remote host closed the connection)
09:13:20 odnes joins (~odnes@5-203-246-15.pat.nym.cosmote.net)
09:16:38 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:16:58 × mikoto-chan quits (~mikoto-ch@84.199.144.234) (Ping timeout: 260 seconds)
09:17:33 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
09:22:02 cdman joins (~dcm@user/dmc/x-4369397)
09:24:44 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
09:24:51 × caubert quits (~caubert@136.244.111.235) (Ping timeout: 246 seconds)
09:25:12 caubert joins (~caubert@136.244.111.235)
09:25:16 Polo is now known as Guest6109
09:25:16 × Guest6109 quits (~Polo@user/polo) (Killed (zinc.libera.chat (Nickname regained by services)))
09:25:22 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
09:25:27 Polo joins (~Polo@user/polo)
09:26:53 × odnes quits (~odnes@5-203-246-15.pat.nym.cosmote.net) (Ping timeout: 260 seconds)
09:26:54 × Polo quits (~Polo@user/polo) (Client Quit)
09:27:25 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 260 seconds)
09:28:03 <Las[m]> Given `type family Const a b where Const a b = a`, is there a better way to write `type B (y :: Const Type x) = A x y`?
09:28:34 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
09:29:14 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:29:43 × Hash quits (~Hash@hey.howstoned.ru) (Read error: Connection reset by peer)
09:29:44 <Las[m]> Essentially I want something similar to the following Idris code: `B : {x : X} -> Y -> Type ; B {x} y = A x y`
09:30:09 coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
09:30:18 Hash joins (~Hash@hey.howstoned.ru)
09:31:04 <[exa]> Las[m]: naively I'd guess that B should be a type family
09:31:57 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
09:32:08 mc47 joins (~mc47@xmonad/TheMC47)
09:32:56 × coot_ quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Client Quit)
09:33:16 coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
09:33:56 × coot quits (~coot@213.134.190.95) (Ping timeout: 248 seconds)
09:35:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
09:35:38 × coot_ quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Read error: Connection reset by peer)
09:35:52 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
09:36:34 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
09:36:56 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
09:39:08 <lortabac> how can I get the cabal.project.freeze corresponding to a given stackage snapshot?
09:39:22 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
09:39:24 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:39:25 <Franciman> ping fgaz
09:39:43 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:40:55 <maerwald> lortabac: stack2cabal
09:41:05 <maerwald> https://hackage.haskell.org/package/stack2cabal
09:41:09 <Franciman> messieur lortabac cette connexion https://github.com/fpco/stackage-server/issues/232 peut vous aider
09:41:14 × Kaiepi quits (~Kaiepi@156.34.47.253) (Quit: Leaving)
09:42:30 <lortabac> maerwald: can I use it to create only the .freeze file?
09:43:02 <maerwald> lortabac: curl https://www.stackage.org/lts-18.26/cabal.config > cabal.project.freeze
09:43:20 <lortabac> maerwald: thanks, that's what I was looking for
09:44:09 <maerwald> lortabac: cabal-3.7 has first class support for includes btw
09:44:11 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
09:44:21 <maerwald> https://github.com/haskell/cabal/issues/6528#issuecomment-1092062758
09:44:46 <maerwald> you'd just add this to cabal.project: `import: https://www.stackage.org/lts-18.26/cabal.config`
09:44:55 <maerwald> cabal prerelease can be enabled via ghcup
09:45:08 × acidjnk quits (~acidjnk@p200300d0c7068b349c270144d8822819.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
09:45:53 <maerwald> this won't work well if you're overwriting constraints from stackage snapshot with source-repository-package... only stack2cabal resolves those
09:46:06 <maerwald> (I could add a --only-freeze option to it)
09:46:44 <lortabac> I want the ability to override specific packages, is it possible with remote imports?
09:47:09 <lortabac> I guess --only-freeze would be the best solution
09:48:38 <maerwald> https://github.com/hasufell/stack2cabal/blob/6f12cea1bffaa804430317b1d66ce2d60c7b05b2/lib/StackageToHackage/Stackage.hs#L137
09:49:18 <maerwald> you can just manually delete stuff from the freeze file too
09:49:24 <maerwald> I don't know your use case
09:49:34 <maerwald> is it automated?
09:50:08 <lortabac> no
09:50:30 <maerwald> then you can just delete whatever you overwrite from the resolver from the freeze file
09:51:14 <lortabac> yes, that was my idea
09:51:32 <lortabac> but if the freeze file is remote, can I do it?
09:51:51 <lortabac> (or maybe I misunderstood what import means?)
09:51:57 <maerwald> nope... that's why duncan suggested a constraint algebra
09:52:21 <geekosaur> juhp[m], okay, that's weird. I would expect the first line of the missing-do do to be an error, but I guess it's parsed as a … I forget what. (still working on first coffee)
09:52:29 <maerwald> constraints are passed to the solver without any pre-processing, so if you have multiple constraints that can be solved, cabal will just barf out
09:52:37 <maerwald> s/can/can't/
09:53:12 <maerwald> so importing mulitple freeze files will not overwrite anything, but just make cabal potentially fail
09:53:38 <maerwald> it's simple union
09:53:45 <lortabac> an algebra would be great indeed
09:54:05 <maerwald> lortabac: well, but no one is working on it
09:54:13 <lortabac> so the best thing for me at the moment is to download cabal.config
09:54:26 <maerwald> yeah, process it like stack2cabal
09:54:30 <lortabac> and remove the lines that I want to override
09:54:58 <maerwald> wouldn't be hard to write a smaller tool than stack2cabal that just merges two freeze files with your preferred logic
09:55:19 <maerwald> because it's yaml, not some esoteric custom format like cabal :p
09:55:31 <maerwald> (stackage snapshots, that is)
09:56:36 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 276 seconds)
09:57:10 <Las[m]> [exa]: Unfortunately I couldn't find any way to do it with type families at all, even using the `Const`-trick. With `newtype`s, you can use GADT-syntax to introduce `forall`s.
09:57:29 <Las[m]> But with type families, the arity changes if you put the parameters on the right side of the `::`, so I can't define the type family.
10:01:39 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
10:08:30 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Remote host closed the connection)
10:12:26 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
10:15:42 xaotuk joins (~sasha@net200-34-245-109.mbb.telenor.rs)
10:15:55 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
10:16:56 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
10:17:10 hrdl parts (~hrdl@mail.hrdl.eu) ()
10:18:04 × chele quits (~chele@user/chele) (Remote host closed the connection)
10:20:43 Kaiepi joins (~Kaiepi@156.34.47.253)
10:23:24 Midjak joins (~Midjak@82.66.147.146)
10:34:49 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:37:49 mmhat joins (~mmh@2001:4090:a246:8044:ee08:6bff:fe09:5315)
10:47:59 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:48:31 ubert joins (~Thunderbi@p200300ecdf15882975febf22f194fce4.dip0.t-ipconnect.de)
10:48:33 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
10:48:40 jakalx parts (~jakalx@base.jakalx.net) ()
10:49:16 Lord_of_Life_ is now known as Lord_of_Life
10:53:45 jakalx joins (~jakalx@base.jakalx.net)
11:00:42 × cheater quits (~Username@user/cheater) (Quit: BitchX: the OTHER white meat)
11:01:22 cheater joins (~Username@user/cheater)
11:13:03 xff0x joins (~xff0x@om126253182187.31.openmobile.ne.jp)
11:15:02 yauhsien joins (~yauhsien@61-231-34-25.dynamic-ip.hinet.net)
11:15:27 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 246 seconds)
11:19:41 × yauhsien quits (~yauhsien@61-231-34-25.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
11:28:54 × zyklotomic quits (~ethan@res380d-128-61-83-67.res.gatech.edu) (Ping timeout: 276 seconds)
11:30:32 dfip^ joins (~dfip@173-160-94-253-atlanta.hfc.comcastbusiness.net)
11:30:41 zyklotomic joins (~ethan@res388d-128-61-94-22.res.gatech.edu)
11:31:53 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
11:32:33 bahamas joins (~lucian@84.232.141.55)
11:34:24 × alp_ quits (~alp@user/alp) (Ping timeout: 252 seconds)
11:41:52 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:44:39 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
11:46:01 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 248 seconds)
11:46:12 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
11:50:58 alp_ joins (~alp@user/alp)
11:54:55 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:56:29 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
12:02:13 × frost quits (~frost@user/frost) (Quit: Client closed)
12:03:04 frost joins (~frost@user/frost)
12:04:09 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in)
12:05:10 mikoto-chan joins (~mikoto-ch@213.177.151.239)
12:06:47 Ether17 joins (~Ether17@45.248.151.250)
12:07:39 × Ether17 quits (~Ether17@45.248.151.250) (Client Quit)
12:12:06 × dextaa4 quits (~dextaa@user/dextaa) (Remote host closed the connection)
12:14:15 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 260 seconds)
12:15:07 × frost quits (~frost@user/frost) (Quit: Client closed)
12:18:02 frost joins (~frost@user/frost)
12:19:05 zeenk joins (~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d)
12:21:16 <dmj`> monochrom: 100 proof assistant (><)
12:22:15 zebrag joins (~chris@user/zebrag)
12:26:02 bahamas joins (~lucian@84.232.141.55)
12:29:21 × raym quits (~raym@user/raym) (Ping timeout: 276 seconds)
12:35:50 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
12:44:18 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 276 seconds)
12:44:54 raym joins (~raym@user/raym)
12:49:03 Kaiepi joins (~Kaiepi@156.34.47.253)
12:49:28 × raym quits (~raym@user/raym) (Ping timeout: 248 seconds)
12:51:15 xkuru joins (~xkuru@user/xkuru)
12:59:10 × phma quits (phma@2001:5b0:211c:bd68:1a30:3d9:b27f:d715) (Read error: Connection reset by peer)
12:59:52 phma joins (~phma@host-67-44-208-170.hnremote.net)
13:01:03 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
13:06:17 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
13:10:42 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
13:10:51 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
13:13:54 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
13:17:16 Sgeo joins (~Sgeo@user/sgeo)
13:17:19 __monty__ joins (~toonn@user/toonn)
13:20:10 × xaotuk quits (~sasha@net200-34-245-109.mbb.telenor.rs) (Ping timeout: 260 seconds)
13:23:37 × arjun quits (~arjun@user/arjun) (Ping timeout: 248 seconds)
13:23:57 × turlando quits (~turlando@user/turlando) (Ping timeout: 276 seconds)
13:27:27 odnes joins (~odnes@5-203-210-252.pat.nym.cosmote.net)
13:29:26 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.5)
13:29:35 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:35:00 × jao quits (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 248 seconds)
13:35:42 raym joins (~raym@user/raym)
13:38:36 × mmhat quits (~mmh@2001:4090:a246:8044:ee08:6bff:fe09:5315) (Quit: WeeChat 3.5)
13:43:07 × raym quits (~raym@user/raym) (Ping timeout: 240 seconds)
13:43:11 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:44:19 raym joins (~raym@user/raym)
13:49:20 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
13:50:42 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
13:50:45 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
13:56:21 eltonpinto joins (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3)
13:59:41 kenran joins (~kenran@200116b82b9bc0001d39572182082eac.dip.versatel-1u1.de)
14:00:42 × kenran quits (~kenran@200116b82b9bc0001d39572182082eac.dip.versatel-1u1.de) (Client Quit)
14:00:51 kenran joins (~kenran@200116b82b9bc0001d39572182082eac.dip.versatel-1u1.de)
14:01:10 × kenran quits (~kenran@200116b82b9bc0001d39572182082eac.dip.versatel-1u1.de) (Client Quit)
14:01:46 kenran joins (~kenran@200116b82b9bc0001d39572182082eac.dip.versatel-1u1.de)
14:02:31 × [Leary] quits (~Leary]@122-58-228-205-vdsl.sparkbb.co.nz) (Remote host closed the connection)
14:05:00 [Leary] joins (~Leary]@122-58-228-205-vdsl.sparkbb.co.nz)
14:06:19 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
14:06:21 jinsun__ joins (~jinsun@user/jinsun)
14:08:48 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds)
14:10:26 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 250 seconds)
14:10:28 mikoto-chan joins (~mikoto-ch@213.177.151.239)
14:12:53 × eltonpinto quits (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3) (Quit: WeeChat 3.4.1)
14:13:11 × zyklotomic quits (~ethan@res388d-128-61-94-22.res.gatech.edu) (Quit: WeeChat 2.7.1)
14:16:48 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
14:17:45 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 252 seconds)
14:19:45 pavonia joins (~user@user/siracusa)
14:20:15 mikoto-chan joins (~mikoto-ch@213.177.151.239)
14:20:43 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:21:35 eltonpinto joins (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3)
14:22:27 Kaiepi joins (~Kaiepi@156.34.47.253)
14:26:09 <juhp[m]> geekosaur: okay
14:26:49 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
14:31:21 <juhp[m]> The other day I couldn't get ghc9.4 alpha1 to build locally but it worked in the fedora buildsystem, today HLS builds locally for me with ghc9.0 but fails rejecting entropy in the buildsystem using cabal ugh (I suppose this is the kind of reason why people use nix... sigh)
14:36:23 <juhp[m]> Ah I do have newer cabal-install locally now - wonder if that is the discrepancy
14:37:53 x_kuru joins (~xkuru@user/xkuru)
14:38:08 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
14:39:33 × Vajb quits (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56) (Read error: Connection reset by peer)
14:39:44 Vajb joins (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56)
14:41:15 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 260 seconds)
14:41:15 × Vajb quits (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56) (Read error: Connection reset by peer)
14:41:24 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
14:42:28 shriekingnoise joins (~shrieking@201.231.16.156)
14:44:03 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:48:36 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
14:49:22 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
14:51:15 × eltonpinto quits (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3) (Quit: WeeChat 3.4.1)
14:51:32 eltonpinto joins (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3)
14:53:50 × dfip^ quits (~dfip@173-160-94-253-atlanta.hfc.comcastbusiness.net) (Remote host closed the connection)
14:54:10 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:f12b:6d29:e790:1b4f) (Quit: WeeChat 2.8)
14:54:17 melas joins (~melas@172.77.31.247)
14:54:43 nattiestnate joins (~nate@202.138.250.52)
14:54:48 <melas> Hi. I decided to make haskell my first language and I'm 37. go me. Just wanted to say hi.
14:55:20 × eltonpinto quits (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3) (Client Quit)
14:55:35 eltonpinto joins (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3)
14:55:45 <maerwald> hi
14:58:33 × nattiestnate quits (~nate@202.138.250.52) (Client Quit)
14:58:46 nattiestnate joins (~nate@202.138.250.20)
15:01:29 moonsheep joins (~user@iespladelestany.xtec.cat)
15:01:30 <exarkun> melas: welcome
15:01:52 <maerwald> melas: do you already have learning material etc?
15:03:24 <melas> Well, the only thing I have is the Haskell first principals book. I am interested in everything I can get my hands on though. Some video would be nice.
15:04:12 <melas> I have a bunch of pdf's a friend gave to me that are all Haskell books from the 90's / early 200's but I'm not sure how relevant theyu are these days
15:04:32 × eltonpinto quits (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3) (Quit: WeeChat 3.4.1)
15:04:48 <melas> I was thinking about getting a Udemy course or the like
15:04:49 eltonpinto joins (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3)
15:05:25 eltonpinto parts (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3) ()
15:06:32 <maerwald> https://github.com/haskell-beginners-2022/course-plan
15:06:46 <maerwald> and maybe https://www.cis.upenn.edu/~cis194/spring13/
15:08:04 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
15:12:30 eltonpinto joins (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3)
15:12:56 eltonpinto parts (~1ntEgr8@2600:1700:47f0:d3d0:c468:7e34:5fd7:18a3) ()
15:13:08 odnes_ joins (~odnes@5-203-210-252.pat.nym.cosmote.net)
15:13:28 Sgeo joins (~Sgeo@user/sgeo)
15:13:59 × odnes quits (~odnes@5-203-210-252.pat.nym.cosmote.net) (Read error: Connection reset by peer)
15:14:33 × alp_ quits (~alp@user/alp) (Ping timeout: 248 seconds)
15:15:52 ec joins (~ec@gateway/tor-sasl/ec)
15:16:37 × ec quits (~ec@gateway/tor-sasl/ec) (Client Quit)
15:16:56 ec joins (~ec@gateway/tor-sasl/ec)
15:17:29 odnes__ joins (~odnes@5-203-210-252.pat.nym.cosmote.net)
15:18:05 × zeenk quits (~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d) (Quit: Konversation terminated!)
15:18:43 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:20:18 × odnes_ quits (~odnes@5-203-210-252.pat.nym.cosmote.net) (Ping timeout: 276 seconds)
15:23:34 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
15:26:40 <moonsheep> is this the place to ask about the snap framework?
15:26:48 × jao quits (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 248 seconds)
15:26:51 <moonsheep> in their about page they point to a channel in freenode, but it seems to be completely empty
15:27:29 <moonsheep> logging in was a nightmare (they have a password length limit!) and there was literally no one there
15:28:04 <moonsheep> so I figured I might as well come here
15:28:12 hololeap_ joins (~hololeap@user/hololeap)
15:28:47 <maerwald> snap might be past its prime... surprised there's no channel for it on libera though
15:29:17 alp_ joins (~alp@user/alp)
15:29:43 <moonsheep> it seemed pretty nice on paper so I thought I might as well try it
15:30:28 <maerwald> these days, servant is the most popular
15:30:44 <moonsheep> hadn't heard of it
15:30:52 <maerwald> it expresses APIs as types
15:32:04 <moonsheep> so then, if I'm to learn one I should do servant?
15:32:09 <moonsheep> I also heard of yesod, is it any good?
15:33:53 <juhp[m]> juhp[m]: okay that fixed it...
15:35:43 <[exa]> moonsheep: everyone kinda moved to libera since one certain event. If you just want to start with web APIs etc, scotty might "just do".
15:35:58 gnyeki joins (~gnyeki@user/gnyeki)
15:36:11 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
15:36:24 ec joins (~ec@gateway/tor-sasl/ec)
15:36:28 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
15:36:38 <moonsheep> does it have a templating engine?
15:36:46 <moonsheep> i feel like that's one of the primary things I need
15:36:56 <moonsheep> I don't care too much for the bells and whistles
15:37:02 <[exa]> moonsheep: yesod is a bit more oldschool haskell, lots of template haskell
15:37:15 <moonsheep> ah
15:37:20 <[exa]> there are template languages that can be easily plugged into all of these afaik
15:37:32 <moonsheep> good to know
15:38:07 <moonsheep> so then, between servant and scotty, which should I choose?
15:38:14 <[exa]> but usually it's easier to just write the html directly in blaze
15:39:28 <[exa]> re servant vs scotty, depends on project complexity
15:39:37 <moonsheep> oh so writing HTML as an embedded language?
15:39:51 <moonsheep> as for project complexity I don't expect to get very far
15:39:54 <[exa]> also servant is basically meant as a super-complexly-typed REST api server
15:40:08 <moonsheep> I'm mostly doing this for my own amusement
15:40:08 <[exa]> if you just want a nice web running safely with haskell, scotty is the way
15:40:14 <moonsheep> right
15:40:15 <tdammers> indeed, servant was never designed to be a "web framework"
15:40:32 <[exa]> also, the learning curve doesn't hit you
15:40:56 stackdroid18 joins (14094@user/stackdroid)
15:41:06 <tdammers> And as far as template engines go, you can just plug in whichever one you like best. My go-to's are blaze when it's OK to compile templates in, and my own Ginger when I need users to change templates at runtime.
15:41:43 <maerwald> moonsheep: https://haskell-servant.github.io/posts/2018-07-12-servant-dsl-typelevel.html
15:42:34 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
15:42:38 <[exa]> moonsheep: I'd say the scotty ecosystem got pretty comprehensive, see here https://hoogle.haskell.org/?hoogle=scotty%20is%3Apackage&scope=set:stackage
15:44:02 <dolio> Isn't not merely complexly typed, right? The point is that you write types to describe things, and functionality is derived from them.
15:44:02 <moonsheep> thank you so much everyone
15:44:23 <moonsheep> I think I'll go with scotty for now
15:44:44 <moonsheep> I don't need to write an entire API at the type-level I don't think
15:44:45 <geekosaur> right, the types aren't just there to be complex, they actually do most of the heavy lifting
15:45:20 × phma quits (~phma@host-67-44-208-170.hnremote.net) (Read error: Connection reset by peer)
15:45:40 <dolio> That's what's missing from a lot of 'fancy types' examples. Too many are just enforcing things that make writing anything a lot harder. One of the reasons for wanting fancy types is so that the machine can do more work for you, instead of requiring you to do more work.
15:46:00 <tdammers> the issue with things like servant is that Haskell's type-level language is a bit more awkward than its term-level language
15:46:09 <maerwald> well, I don't like most type-level heavy libraries, but I think servant managed to strike an ok balance
15:46:16 phma joins (~phma@2001:5b0:212a:a158:cf03:ba31:b20b:efff)
15:46:24 <dolio> Yeah, Haskell is not ideal for accomplishing the goal.
15:46:52 <maerwald> but yeah, type level APIs leak implementation difficulties
15:46:59 <[exa]> dolio: btw that property about not overdoing types the wrong way should have a name (types as code generators, not restrictions?)
15:47:03 <dolio> maerwald: Yeah, I'm trying to explain why you might like it better.
15:47:48 ec joins (~ec@gateway/tor-sasl/ec)
15:49:08 <moonsheep> by the way, shouldn't https://wiki.haskell.org/Web/Frameworks make this things a bit clearer? I mean, most of the frameworks listed seem pretty unmaintained
15:49:29 <moonsheep> perhaps there should be a section at the top for the more current frameworks?
15:50:02 <moonsheep> it just blasted a bunch of options at me and didn't help me make a choice at all
15:50:52 <geekosaur> the whole wiki's in that state, sadly
15:51:14 odnes joins (~odnes@5-203-206-15.pat.nym.cosmote.net)
15:51:24 <maerwald> yeah, I want to delete it
15:51:28 <moonsheep> I'd love to help imrpove that page, but I don't think I'm in a position to do that right now, especially considering I'm literally just starting out
15:51:50 × odnes quits (~odnes@5-203-206-15.pat.nym.cosmote.net) (Remote host closed the connection)
15:52:14 <hololeap_> internal libraries in Cabal seem so useful, how come they aren't seen more often?
15:52:17 hololeap_ is now known as hololeap
15:52:18 <dolio> Well, just don't forget to go back after you learn about everything, like everyone else did. :)
15:52:30 <hololeap> https://cabal.readthedocs.io/en/3.4/cabal-package.html#sublibs
15:52:36 × odnes__ quits (~odnes@5-203-210-252.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
15:52:48 <moonsheep> now those are some big words >learn about everything
15:52:54 <moonsheep> btw what's the proper way to quote messages?
15:53:02 <geekosaur> there isn't one on irc
15:53:04 <[exa]> moonsheep: actually I kinda like that people come here and just ask the developers :D also wiki maintenance isn't free, esp. with a diverse, opinionated and quickly developing community
15:53:12 <geekosaur> I use » so I don't set off the bot
15:53:27 × cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 276 seconds)
15:53:31 <moonsheep> ah, so anything goes? (as long as it's clear that it's a quote?)
15:53:35 <geekosaur> not thst I quote very often and most of the time that ends up being whole messages so I just cut and paste with timestamp
15:53:40 <moonsheep> [exa]: yeah I agree, I really like chatrooms
15:54:02 <[exa]> moonsheep: IRC is a RPG, really imagine you're speaking and try to reduce the markup :D
15:54:20 <geekosaur> hololeap, internal libs are still new enough that I suspect they're just not well knnown yet
15:54:29 <geekosaur> think they came in with cabal 3.x
15:54:47 <dolio> According to that doc it was 2.0, apparently.
15:54:48 × kenran quits (~kenran@200116b82b9bc0001d39572182082eac.dip.versatel-1u1.de) (Quit: WeeChat info:version)
15:54:58 <[exa]> moonsheep: btw in #haskell, > on the beginning of the message triggers lambdabot to evaluate the message, but that's it I guess
15:55:18 <moonsheep> >2 * "
15:55:21 <moonsheep> >2*2
15:55:30 <geekosaur> watch out for ">", "@", "?", and sometimes ":"
15:55:32 <int-e> > 2*2 -- needs a space too
15:55:33 <geekosaur> need a space
15:55:33 <lambdabot> 4
15:55:35 <moonsheep> > 2 * 2
15:55:36 <lambdabot> 4
15:55:38 <moonsheep> ah
15:55:40 <moonsheep> that's really neat
15:55:45 <dolio> Cabal has a lot of features that are actually pretty old, but are still considered new.
15:56:02 <[exa]> an and '%' for the other bot
15:56:08 <melas> Thanks maerwald for those links. I see the college course is from 2013, is that not old, or should it not matter since I'm just starting?
15:56:31 <moonsheep> what happens if I
15:56:32 <moonsheep> > getLine
15:56:33 <lambdabot> <IO [Char]>
15:56:39 <moonsheep> the bot is too smart
15:56:47 <maerwald> melas: the college course is good
15:57:05 <geekosaur> melas, that particular instantiation is from 2013, but it's generally considered the best of the series
15:57:22 <geekosaur> I think later ones are also online if you prefer
15:57:55 <int-e> moonsheep: "can't we use Haskell's type system to prevent the use of arbitrary IO" must have been one of the inspirations for lambdabot
15:58:10 <moonsheep> yeah I figured
15:58:48 <geekosaur> nicely packaged up as mueval if you want to use it yourself
15:58:53 <moonsheep> > unsafePerformIO (putStrLn "hello")
15:58:55 <lambdabot> error:
15:58:55 <lambdabot> Variable not in scope: unsafePerformIO :: IO () -> t
15:59:00 <moonsheep> worth a shot
15:59:02 <int-e> At the time, the answer was "almost, but not quite"; SafeHaskell fills that gap. (Though I don't think anyone is 100% certain that it succeeds.)
15:59:03 <dolio> hololeap: I guess it's potentially an even worse case of, "I need access to the internals, but they aren't available."
15:59:04 <geekosaur> can't even import it
15:59:28 <dolio> hololeap: Although, nowadays I think youc an depend on sublibraries, so it's actually a better solution to that?
15:59:33 <moonsheep> still, the existence of unsafePerformIO doesn't let me sleep at night
15:59:53 <geekosaur> enh, it has its uses. as long as you're careful
16:00:02 <dolio> Like, you can have all your .Internal modules in an internal library that isn't in the main API, but someone who needs them can depend on lib:internal or something?
16:00:10 <geekosaur> Debug.Trace is a useful and safe use of unsafePerformIO
16:00:11 × renatofdds[m] quits (~renatofdd@2001:470:69fc:105::1:3cfe) (Quit: You have been kicked for being idle)
16:00:20 <moonsheep> yeah, I've used that before
16:00:24 renatofdds[m] joins (~renatofdd@2001:470:69fc:105::1:3cfe)
16:00:26 <geekosaur> dolio, can't depend on internal libraries
16:00:29 renatofdds[m] parts (~renatofdd@2001:470:69fc:105::1:3cfe) ()
16:00:35 <moonsheep> I mean, any language that doesn't have printf debugging is immediately painful to use
16:00:52 <geekosaur> only the cabal file with them can depend on them, they're not exposed in the package system
16:01:00 <moonsheep> but I feel like there should perhaps be some compiler flag in production to disable all trippy type system stuff
16:01:07 <int-e> At the very least, unsafePerformIO is a necessary part of a usable FFI; without it, all imports would live in IO
16:01:18 <melas> Ok great! I'm eventually wanting to get into helping with development on DSP/synthesis stuff. I was inspired by this: https://www.euterpea.com/
16:01:24 <moonsheep> int-e: oh good point
16:01:36 <melas> And I use tidalcycles.org
16:01:59 <maerwald> melas: fyi the installation instructions there are quite outdated
16:02:09 <moonsheep> anyway, was really fun coming here today, goodbye folks
16:02:10 <dolio> geekosaur: What is the feature that allows a package to have multiple sublibraries, then?
16:02:12 × moonsheep quits (~user@iespladelestany.xtec.cat) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
16:02:17 <maerwald> melas: use https://www.haskell.org/ghcup/ instead
16:02:46 <geekosaur> dolio, its original intent was to allow internals to be accessed by a test program without exposing them in the public API
16:04:23 <melas> Looks like I cant install mueval with cabal
16:04:36 <geekosaur> make sure you "cabal update" first
16:05:27 <geekosaur> this is something I hope they improve at some point, it's kinda silly you have to manually "cabal update" after installing
16:05:41 <maerwald> geekosaur: ghcup install script takes care of that :p
16:05:45 odnes joins (~odnes@5-203-198-83.pat.nym.cosmote.net)
16:05:53 <melas> ok thanks!
16:06:44 × jinsun__ quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
16:06:50 <melas> Yeha still cant fufill dependancies after cabal update for mueval
16:07:13 <melas> oh derp, looks like a nux only packagae
16:07:19 <melas> *nix
16:07:41 <melas> Im on windows unfortunately for wok
16:07:53 <melas> sorry cant type today...work
16:08:38 <melas> I'll get my wsl up later. Thanks again for your help everyone, I'll definitely be around :)
16:08:53 <maerwald> GHC also works on plain windows
16:09:10 jinsun joins (~jinsun@user/jinsun)
16:09:49 <melas> I have ghc installed. Is mueval preferred for some reason?
16:09:49 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:12:51 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:12:53 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
16:13:20 × xff0x quits (~xff0x@om126253182187.31.openmobile.ne.jp) (Read error: Connection reset by peer)
16:15:13 kraftwerk28 joins (~kraftwerk@178.62.210.83)
16:19:40 <geekosaur> I meant mueval is the sandboxed ghc used by lambdabot. You wouldn't use it normally
16:19:46 <geekosaur> you would use ghci
16:22:22 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:23:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:23:44 <melas> OH haha goctha
16:24:06 × odnes quits (~odnes@5-203-198-83.pat.nym.cosmote.net) (Remote host closed the connection)
16:24:39 odnes joins (~odnes@5-203-198-83.pat.nym.cosmote.net)
16:24:51 jinsun joins (~jinsun@user/jinsun)
16:28:42 Guest87 joins (~Guest87@179.43.100.206)
16:28:51 Vajb joins (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56)
16:31:05 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
16:31:27 jinsun joins (~jinsun@user/jinsun)
16:32:35 × Guest87 quits (~Guest87@179.43.100.206) (Client Quit)
16:33:05 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
16:33:22 jinsun joins (~jinsun@user/jinsun)
16:37:21 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in)
16:38:09 kraftwerk28 joins (~kraftwerk@178.62.210.83)
16:39:02 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
16:39:17 PapuaHardyNet is now known as mesaoptimizer
16:40:24 <dolio> geekosaur: At least locally, you can do what I said. Have a package that depends on a sublibrary of another package. Just tried it out.
16:40:38 <geekosaur> interesting
16:40:51 <dolio> I'd heard that hackage was going to get support for this, too, but I don't know whether it actually happened.
16:40:59 <geekosaur> I think that contradicts the docs
16:41:04 <geekosaur> ah
16:41:19 <dolio> I'm not going to upload garbage package to hackage to test it out. :)
16:41:49 oxide joins (~lambda@user/oxide)
16:47:53 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving)
16:48:07 <dolio> One plan I'd heard of for this is that lens could contain many sublibraries that could be depended on individually, rather than getting everything or nothing, but could they could all live in the same package.
16:49:11 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:49:35 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
16:51:30 <c_wraith> I suppose if you partition it into things that exist solely to support lenses for types in extra packages, that would be of some use.
16:51:45 waleee joins (~waleee@h-155-4-221-82.NA.cust.bahnhof.se)
16:52:58 <c_wraith> You could look at it as a way to address orphan instances. sublibraries that don't have the orphan instances if you don't want to pull in the dependencies, then one additional sublibrary for each dependency you want to add instances for.
16:53:13 <c_wraith> They're kind of orphan, but kind of not.
16:54:08 × phma quits (~phma@2001:5b0:212a:a158:cf03:ba31:b20b:efff) (Read error: Connection reset by peer)
16:54:48 <c_wraith> though you wouldn't want an extra import when you do want the extra instances, so that might be a giant pain.
16:55:08 phma joins (~phma@2001:5b0:211b:9668:1b71:5de:d62c:3d45)
16:58:01 × alp_ quits (~alp@user/alp) (Ping timeout: 248 seconds)
16:59:04 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
17:00:48 caef^ joins (~caef@173-160-94-253-atlanta.hfc.comcastbusiness.net)
17:01:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:03:51 inversed joins (~inversed@176.248.27.211)
17:04:12 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:06:58 × inversed_ quits (~inversed@176.248.27.211) (Ping timeout: 272 seconds)
17:08:41 × raym quits (~raym@user/raym) (Ping timeout: 248 seconds)
17:11:34 moonsheep joins (~user@iespladelestany.xtec.cat)
17:12:26 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 250 seconds)
17:13:01 cyphase joins (~cyphase@user/cyphase)
17:14:19 × odnes quits (~odnes@5-203-198-83.pat.nym.cosmote.net) (Ping timeout: 240 seconds)
17:17:07 <maerwald> automatic partial builds... and cabal drops all the dependencies it doesn't need :p
17:17:19 odnes joins (~odnes@5-203-204-134.pat.nym.cosmote.net)
17:17:56 Polo joins (~Polo@user/polo)
17:20:34 <dolio> c_wraith: I think part of the point was that there was already some partitioning in hackage, like `lens-X` such that if you depended on all of them, you'd get approximately all of lens. But it was a bunch of duplicated effort.
17:21:13 <dolio> And instead of two dozen (or whatever) lens-X packages, it could be lens:X.
17:21:43 <Franciman> when you escape haskell's ivory tower, writing interpreters becomes a breeze
17:22:29 <Franciman> it all becomes so clear
17:23:35 × waleee quits (~waleee@h-155-4-221-82.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
17:26:49 <geekosaur> Franciman, do you have anything cogent to say or are you just randomly popping up to piss on Haskell in a Haskell channel?
17:27:23 <Franciman> uh yes. Once you start thinking about the memory layout and management of the interpreter
17:27:26 × moonsheep quits (~user@iespladelestany.xtec.cat) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
17:27:29 <Franciman> every piece starts fitting correctly
17:27:36 <Franciman> sorry i was distracted on soccer
17:27:51 <Franciman> so basically your interpreter becomes much more inspectable
17:28:03 <Franciman> and you can provide very fine grained statistics and debugging things
17:28:06 <Franciman> in haskell it proved REALLY HARD
17:28:09 <Franciman> same in sml, really
17:28:11 <geekosaur> again, is this cogent or is it just random pissing?
17:28:19 <hololeap> haskell is like the fire hydrant on a dog's morning walk
17:28:45 <Franciman> geekosaur: it is cogent for me.
17:28:53 <Franciman> getting predictable performances is IMPORTANT
17:28:55 <Franciman> for me
17:29:03 <geekosaur> I mean, you keep doing this. saying the same things. randomly popping up apparently because nobody's talking about your world-saving interpreter
17:29:12 <Franciman> nono sir
17:29:15 <Franciman> i'm not saving anybody
17:29:21 <Franciman> haskell is the best functional programming language around
17:29:31 <Franciman> i'm just saying my experience with it writing an interpreter
17:29:37 <Franciman> my language is not gonna be better than haskell, NEVER
17:29:39 <Franciman> so please
17:29:47 <Polo> Ay im pretty chill just sayin
17:30:44 × odnes quits (~odnes@5-203-204-134.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
17:31:18 <Franciman> my takeaway so far was that ghc produces much better code when you don't question too much how things are evaluated, in what order etc
17:31:40 <Franciman> an this is great. Getting the best performances when you don't think about how to get them, but just work declaratively is RAD
17:32:05 azimut joins (~azimut@gateway/tor-sasl/azimut)
17:32:06 odnes joins (~odnes@5-203-251-40.pat.nym.cosmote.net)
17:32:36 <Franciman> now the question is: is it harder to write an interpreter in C from scratch or to learn to productively tweak with stg-machine?
17:33:04 <Franciman> o far my takeaway was: better with C, it took less
17:33:42 dagit joins (~dagit@2001:558:6025:38:6476:a063:d05a:44da)
17:34:04 econo joins (uid147250@user/econo)
17:34:19 <Franciman> apparently what laziness shines at is forcing you to think declaratively, equationally
17:34:29 <Franciman> and avoiding shitty hacks
17:34:38 <Franciman> it just says: don't worry, i'mma take care of it
17:35:04 <Franciman> something else which really shines at is forcing the separation of side effects, if you start using unsafePerformIO
17:35:15 <Franciman> that doesn't respect referential trasparency, you get unpredictable stuff out
17:35:27 <Franciman> while with eager evaluation it's much easier to sneak side effects in
17:36:05 <Franciman> would i use haskell for an interpreter? Nope
17:36:29 <Franciman> i found myself too in need of tweaking even the lowest bits of the evaluation process
17:37:18 <Franciman> because i found that i needed to make things work in a very specific way, to get good introspection and performances together
17:37:38 <Franciman> and ghc's runtime just want to naturally work in a different way
17:38:48 <Franciman> you want a cogent example you said. I at first used an environment based interpreter
17:38:58 <Franciman> but i wanted to convert it to a stack based one, with a manually managed stack
17:39:16 <Franciman> the output was both horrendous and slow
17:39:23 <Franciman> i haven't yet succeeded at doing it
17:39:26 <monochrom> geekosaur: Self-assessments of "do you understand this?" "is this relevant to the rest of us?" "is your writing clear and easy to follow?" "are you correct?" are clearly all doomed, of course everyone thinks they're right.
17:40:02 <Franciman> how would you specify the code for your lambda calculus with call by value in Haskell?
17:40:07 <Franciman> what strategy would you use?
17:41:13 <monochrom> At school there is always a minority of 1st-year students who request for re-grade by starting with "my code works but it failed your test cases"
17:41:19 <sclv> personally i would google and read decades of prior relevant research
17:41:37 <Franciman> thanks sclv
17:41:40 <Franciman> i didn't think about it
17:44:09 <Franciman> lols honestly
17:44:20 <Franciman> i think you have a bit of a preconception with what i say
17:45:26 <Franciman> if i just wanted to talk shit about haskell, i would just say Clojure > Haskell
17:45:39 <Franciman> and things like that. I'm trying to get in good relationship with laziness
17:45:55 <Franciman> sorry if i seem too assertive, maybe that's it
17:47:32 <monochrom> You have found a way to implement an efficiency interpreter. Now you just need to also find a way to efficiently say it.
17:47:40 alp_ joins (~alp@user/alp)
17:48:24 <Franciman> but i'd like to write it in haskell :(
17:48:26 <Franciman> but i can't
17:48:34 tfeb joins (~tfb@balview.plus.com)
17:48:42 <monochrom> It takes only two sentences. Using an ADT in a high-level language for stack is inefficient. Using a low-level language to access memory more directly to build the stack is more efficient. THE END.
17:48:56 <Franciman> most of the research i found was about doing kind of optimisations that require low level tweaks
17:48:57 × caef^ quits (~caef@173-160-94-253-atlanta.hfc.comcastbusiness.net) (Remote host closed the connection)
17:49:11 <Franciman> like manually managing a stack where you intersperse activtion records
17:49:18 <Franciman> and arguments to functions
17:50:52 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:51:45 <Franciman> uhm monochrom but an unboxed representation wouldn't work?
17:52:46 <monochrom> I am showing you how to use just two sentences to replace your I don't know 100 sentences?
17:53:04 × mbuf quits (~Shakthi@223.184.62.182) (Quit: Leaving)
17:53:09 <monochrom> "Now you just need to also find a way to efficiently say it."
17:53:21 <Franciman> ah ok thank you
17:53:28 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Read error: Connection reset by peer)
17:53:33 <monochrom> If it is still not clear: Efficient communication with other people.
17:53:45 <Franciman> yes, i will pay more attention
17:53:49 <Franciman> sorry thanks
17:54:25 × Polo quits (~Polo@user/polo) (Quit: Textual IRC Client: www.textualapp.com)
17:58:30 raym joins (~raym@user/raym)
17:58:44 bahamas joins (~lucian@84.232.141.55)
17:58:52 × pie_ quits (~pie_bnc@user/pie/x-2818909) ()
17:59:29 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
17:59:30 pie_ joins (~pie_bnc@user/pie/x-2818909)
17:59:50 stackdroid18 joins (14094@user/stackdroid)
17:59:51 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
18:00:13 × nurupo quits (~nurupo.ga@user/nurupo) (Quit: nurupo.ga)
18:00:27 nurupo joins (~nurupo.ga@user/nurupo)
18:00:41 × tfeb quits (~tfb@balview.plus.com) (Remote host closed the connection)
18:02:44 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds)
18:03:05 × alp_ quits (~alp@user/alp) (Ping timeout: 248 seconds)
18:03:19 <sm> Franciman, I can relate to refreshment you feel when switching from one language/paradigm to another after some time.. you really enjoy the things that are easier in the the other
18:03:24 <sm> there's a bit of a honeymoon I find
18:05:07 kenran joins (~kenran@200116b82b9bc000295e8ec7d820b24d.dip.versatel-1u1.de)
18:05:15 × kenran quits (~kenran@200116b82b9bc000295e8ec7d820b24d.dip.versatel-1u1.de) (Client Quit)
18:05:25 <sm> there's also often a big effect from having just the done same thing elsewhere.. everything is much clearer in your mind
18:05:55 <sm> but I like those experience reports/comparisons of the same task across in multiple languages/paradigms
18:05:59 × gawen quits (~gawen@user/gawen) (Ping timeout: 240 seconds)
18:06:01 <maerwald> yeah, working on vscode-haskell gave me a refresher why javascript is a nightmare :D
18:06:11 <sm> heh
18:06:16 kenran joins (~kenran@200116b82b9bc000379afc39a9f09380.dip.versatel-1u1.de)
18:06:47 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
18:06:57 <sm> I really enjoyed doing some scripting python lately. So much less ceremony! Delightful! It did get a bit tedious making it robust, fairly soon
18:07:06 <geekosaur> still, there is that and there is whining about escaping the ivory tower
18:07:43 <monochrom> The lesson holds for all high-level languages.
18:08:00 <monochrom> All the way from Java to Clojure. Not just Haskell. Not just lazy evalution.
18:08:04 × odnes quits (~odnes@5-203-251-40.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
18:08:46 echoone joins (~echoone@2a02:8109:a1c0:5d05:c5d3:5bf9:8bd:8b04)
18:08:56 <monochrom> But I guess this is just another facet of what sclv said about prior work.
18:09:39 <monochrom> If you never look at prior work, you both don't know known lessons and don't know that it is not just Haskell and it is not just ivory tower.
18:11:25 <echoone> https://sodocumentation.net/haskell/topic/4525/data-aeson---json-in-haskell <-- I was trying this aeson tutorial, but when I decode I get Nothing instead of Just. I'm not sure what I am doing wrong here.
18:11:44 <monochrom> Show actual code?
18:12:16 <monochrom> @where paste
18:12:16 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
18:12:21 <carbolymer> echoone: you might probably need a type annotation to let decode know that you're decoding into `Maybe Person`
18:12:39 <maerwald> echoone: try `eitherDecode`
18:13:13 <monochrom> Or another blog that posts untested code?
18:13:31 <echoone> Ah, the type annotation helped.
18:13:52 carbolymer scores
18:14:08 <carbolymer> we should have leaderboard in helping ;-]
18:14:12 tfeb joins (~tfb@balview.plus.com)
18:14:23 <maerwald> please no... even more DMs
18:14:57 <carbolymer> ;]
18:15:07 <monochrom> Oh Haha "SO Documentation" "Based on the documentation made by Stack Overflow contributors"
18:15:19 <carbolymer> lol
18:15:23 <Hecate> hey folks
18:15:26 <carbolymer> also why this looks like ripcode
18:15:28 <carbolymer> but blue
18:15:30 <monochrom> So yes, taken out of context.
18:15:31 <Hecate> except Markdown support, what's your Haddock christmas list?
18:15:43 <carbolymer> Asciidoc support
18:15:45 dsrt^ joins (~dsrt@173-160-94-253-atlanta.hfc.comcastbusiness.net)
18:15:46 <maerwald> Hecate: this one thing there with CPP
18:15:48 <maerwald> what was it
18:15:56 <Hecate> maerwald: oh yes I stumbled across your ticket recently
18:15:57 <maerwald> https://github.com/haskell/haddock/issues/1440
18:16:22 <Hecate> maerwald: wouldn't this be fixed by Haddock reading the documentation from .hi files directly?
18:16:27 <Hecate> instead of parsing the fix?
18:16:28 <Hecate> *file
18:16:29 <Hecate> damnit
18:16:30 jmdaemon joins (~jmdaemon@user/jmdaemon)
18:17:28 <maerwald> not sure
18:17:45 × Techcable quits (~Techcable@user/Techcable) (Ping timeout: 276 seconds)
18:18:05 <maerwald> there was a workaround which somewhat works
18:18:07 <maerwald> I forgot
18:18:25 gawen joins (~gawen@user/gawen)
18:18:46 <maerwald> I think covid broke my memory, so yeah
18:18:49 <monochrom> No worries, you wrote down the workarounds in that ticket too :)
18:19:02 <maerwald> I think there was another one with a haddock flag
18:19:07 <echoone> Here's another example aeson code that isn't working for me: https://paste.tomsmeding.com/uSWnLLi7
18:19:08 <monochrom> Ah
18:19:16 <echoone> testDecode gives me Nothing
18:19:22 <carbolymer> maerwald: quite probable, I've read somewhere that someone lost their sense of humour after covid vaccine...
18:19:35 <maerwald> something along the lines of NO_HOME something
18:19:55 <maerwald> I'm being overly specific
18:20:04 <monochrom> I wonder if you should change _code to code or change code to _code
18:20:25 <dmj`> echoone: ^
18:20:37 <echoone> Ah, it's the underscore. Crap. I didn't notice that for some reason.
18:20:40 <dmj`> the underscore is causing the failure
18:20:47 <echoone> Isn't there an option to ignore the underscore?
18:21:12 <dmj`> genericParseJSON defaultOptions { fieldLabelModifier = drop 1 }
18:21:41 <echoone> Yeah, let me try that.
18:23:19 <maerwald> {-# OPTIONS_HADDOCK not-home #-}
18:23:57 <dmj`> *suspense*
18:24:02 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
18:24:46 jakalx joins (~jakalx@base.jakalx.net)
18:26:13 <maerwald> hm no, that does nothing for me in the CPP case
18:26:50 <echoone> It worked. Thanks dmj`
18:30:34 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
18:34:39 × tfeb quits (~tfb@balview.plus.com) (Ping timeout: 276 seconds)
18:34:52 hololeap joins (~hololeap@user/hololeap)
18:35:03 <dmj`> echoone: nice
18:36:53 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:41:11 king_gs joins (~Thunderbi@2806:103e:29:99f9:ca77:e08e:3816:239e)
18:41:28 × echoone quits (~echoone@2a02:8109:a1c0:5d05:c5d3:5bf9:8bd:8b04) (Quit: Client closed)
18:42:31 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:42:45 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
18:44:15 Kaiepi joins (~Kaiepi@156.34.47.253)
18:44:44 Techcable joins (~Techcable@user/Techcable)
18:48:38 × mjrosenb quits (~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
18:50:17 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:54:55 mjrosenb joins (~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
18:55:39 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
18:56:14 Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com)
18:57:37 <Henson> if I deepseq something more than once, does it stop traversing the tree of thunks when it encounters one that has already been evaluated? For example, if I have a data structure that is expensive to deepseq and I call deepseq on it more than once, do I only pay the evaluation cost once?
18:58:58 <maerwald> I think it would at least traverse the spine twice https://hackage.haskell.org/package/deepseq-1.4.7.0/docs/src/Control.DeepSeq.html#line-541
18:59:28 <Henson> I have a complex algorithm that is having a memory leak because large data is being associated with some of the data that is being put in. For some reason that I can't unravel, this data is not being garbage collected due to unevaluated thunks prevent garbage collection. Deepseqing the data structure makes it work, but I can't figure out where the problem is occurring and don't know if I...
18:59:33 alp_ joins (~alp@user/alp)
18:59:41 <maerwald> also remember reading that in Simon Marlow's concurrency book
18:59:52 <Henson> should give up an be satisfied with having a deepseq in my algorithm. Somebody told me a couple months ago that you shouldn't use deepseq in production code.
19:00:02 <maerwald> huh? why not
19:00:28 <maerwald> I know a production use case for it. Without it, the backend wouldn't be able to correctly boot.
19:00:40 malinoskj290645 joins (~malinoskj@c-69-138-223-33.hsd1.va.comcast.net)
19:00:50 Guest6593 joins (~Polo@user/polo)
19:01:13 <geekosaur> unevaluated thunks /per se/ shouldn't prevent gc
19:01:29 <Henson> maerwald: so, it'll traverse the spine of any lists, but won't descend into the items on the list if they're already evaluated?
19:01:59 <geekosaur> unless those thunks are themselves holding within them references perhaps, but I'd think then they wouldn't be thunks
19:02:08 <monochrom> I am a different somebody and I tell you that all sentences of the form "___ in production code" are sus.
19:02:24 <Henson> well, something is going on that is preventing things from being garbage collected, and despite putting bangs and seqs and maps of seqs all over the place, I can't figure out where the problem is.
19:03:11 <monochrom> Aliasing blocks GC. Same as in Java.
19:03:12 <geekosaur> also it is possible to have something whose outer constructor has been evaluated but an inner one hasn't, so deepsequ seems like it would be useless if it didn't descend into those
19:04:24 <Henson> geekosaur: right, that's true. The algorithm is iterative, with only a little of the data structure changing each time. So if I deepseq on every iteration, then it has to traverse the whole data structure every time.
19:04:38 <monochrom> Example. "main = let xs=[0..n] in print xs" is O(1) space. "main = let xs=[0..n] in print xs >> print (length xs)" is Ω(n) space.
19:05:20 <monochrom> The latter has nothing to do with laziness. It holds in SML too.
19:05:35 <geekosaur> right
19:05:44 <monochrom> The former though is helped, not hurt, by laziness. The former is Ω(n) space in SML.
19:05:52 <Henson> I tried using various heap profiling options to try to figure out where the problem is, but they're not very helpful. The problem is that the memory is being allocated and freed in C++, so the memory profiling doesn't clearly indicate who the culprit is, as Haskell only knows about the foreign pointers (which are small) and not the data they point to (which is large)
19:05:58 Guest6593 is now known as Polo
19:06:22 <monochrom> There are also examples doing the opposite, laziness causing more space than eagerness.
19:06:40 <monochrom> The conclusion is that both sentences "laziness blocks GC" and "eagerness blocks GC" are sus.
19:06:57 <monochrom> The meta-conclusion is that all Internet hearsays are sus.
19:07:11 Henson chuckles
19:07:17 <monochrom> The Internet is full of dimwit false dichotomies.
19:07:59 <monochrom> As a final example just look at how they say "big-O is worst case, big-Omega is best case, big-Theta is average case".
19:08:28 <Henson> does anybody have any suggestions on tracking down thunk chains? I imagine I just need to put a bang on one or two lines, but which line is the question.
19:08:45 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:10:16 moonsheep joins (~user@185.154.9.192)
19:11:32 <Henson> I'm just progressively disabling the things that are being deepseq'd, to see if I can pinpoint which part of the thunk tree is causing the problem
19:11:36 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
19:13:45 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
19:15:04 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
19:18:06 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:19:40 hololeap joins (~hololeap@user/hololeap)
19:20:02 × hololeap quits (~hololeap@user/hololeap) (Client Quit)
19:21:21 × alp_ quits (~alp@user/alp) (Ping timeout: 256 seconds)
19:22:45 <Henson> is there a function I can use to evaluate only the spine of a list?
19:23:17 <monochrom> length :)
19:25:27 <Henson> monochrom: but in pure core that length needs to be used somewhere for it to actually occur, right? Or can I use seq to cause the length to be evaluated without actually using it? Like l = length foo; l `seq` real_calculation
19:25:54 <Henson> or maybe for the second part data = l `seq` real_calculation
19:26:25 Henson plays with :sprint
19:27:06 odnes joins (~odnes@5-203-251-40.pat.nym.cosmote.net)
19:28:16 <monochrom> You are under too much influence from Internet false dichotomies. Either that, or you also wish they were true because they are so simple and comforting (until refuted by actual code).
19:28:50 <monochrom> Premature evaluating of an ADT spine causes more space, not less. At least in most cases.
19:29:48 × king_gs quits (~Thunderbi@2806:103e:29:99f9:ca77:e08e:3816:239e) (Ping timeout: 250 seconds)
19:29:58 <Henson> monochrom: I'm just trying different ideas to track down what it is that will cause my algorithm to stop bloating
19:30:02 <monochrom> Here is the usual scenerio of laziness causing more space. An ADT must not be involved. Instead, a small footprint type such as Int has to be involved. You try to compute 1+2+3+...+n but you write a lazy foldl.
19:31:02 <energizer> i've got a monoid with the property that for some f, f (f x) = x. is there a type class for that?
19:31:22 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:32:00 <monochrom> No. But it's commonly known as an involution, provided f ≠ id. Also, not just for monoids.
19:32:35 <monochrom> Every non-id self-inverse function is called an involution. No other constraint.
19:33:22 <energizer> why isn't there a type class Involution?
19:33:35 <monochrom> Not enough interest?
19:33:44 <tdammers> no practical use?
19:34:02 <tdammers> this would be a typeclass with no methods, only laws
19:34:20 king_gs joins (~Thunderbi@187.201.220.53)
19:34:32 <monochrom> There is no drive in giving all involutions of the world the same name.
19:35:13 <monochrom> Plus the harsh reality that there can be a million distinct involutions for the same type.
19:35:36 bliminse joins (~bliminse@host86-164-128-238.range86-164.btcentralplus.com)
19:35:38 <monochrom> Every mathematical definition, no matter how useful, does not need a class.
19:35:38 <energizer> the same is true of + isnt it?
19:35:59 <energizer> or *
19:36:10 <maerwald> Henson: https://play-haskell.tomsmeding.com/play/paste/UL3wRxWd/1)
19:36:19 <monochrom> Is it? Ring axioms are much more constraining.
19:36:53 <energizer> i guess this is why idris has "named instances"
19:37:14 <monochrom> For each type there are usually fairly few ways to make a ring, and by the time you discard the trolling ones, there is usually just 0 or 1 way.
19:37:34 <monochrom> But there can still be a ton of actually useful involutions.
19:37:35 notzmv joins (~zmv@user/notzmv)
19:38:43 × oxide quits (~lambda@user/oxide) (Quit: oxide)
19:38:50 <monochrom> In the case of monoid, it is saved by wanting to express both Foldable and Writer.
19:39:30 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:40:14 <monochrom> This is why Monoid is fairly recent. Because Foldable and Writer are also fairly recent. Observe that without Foldable or Writer, no one was interested in make a Monoid class either.
19:40:40 <monochrom> Every mathematical definition does not need a class.
19:43:04 <monochrom> Why does Haskell attract all the perfectionist idealists?
19:43:16 × Polo quits (~Polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:43:40 <darkling> It's the mathematical elegance, I suspect.
19:43:41 <energizer> it's either here or lisp
19:43:50 <monochrom> Lean exists.
19:44:02 <monochrom> 20 years ago I would understand.
19:44:19 <monochrom> This is 2022 and we have Idris and Lean and Clean and Mercury.
19:45:14 <energizer> imho Lean wasnt really a programming language before lean4
19:47:39 <monochrom> Why would a perfectionist want a programming language in the first place?
19:48:26 <energizer> this conversation is getting weird
19:48:52 <monochrom> OK, but IMO wanting a class for involutions is weird in the first place.
19:49:10 <juri_> Don't believe in weird conversations? you better start believin', cause you're in one now.
19:49:10 <monochrom> It would make sense in a math language but not a programming language.
19:49:42 <monochrom> actually s/would/might/ , I am not even convinced about that.
19:49:50 coot joins (~coot@213.134.190.95)
19:52:20 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
19:52:45 Kaiepi joins (~Kaiepi@156.34.47.253)
19:57:04 × kaskal quits (~kaskal@089144207160.atnat0016.highway.bob.at) (Quit: ZNC - https://znc.in)
19:59:25 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 256 seconds)
20:00:13 agumonkey joins (~user@88.163.231.79)
20:00:47 kaskal joins (~kaskal@2001:4bb8:2e0:b5bd:e3c0:d71b:f32:84d8)
20:01:40 × odnes quits (~odnes@5-203-251-40.pat.nym.cosmote.net) (Remote host closed the connection)
20:01:59 odnes joins (~odnes@5-203-251-40.pat.nym.cosmote.net)
20:02:06 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:11:11 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
20:11:34 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
20:16:06 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:18:42 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
20:23:51 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
20:25:22 marvin3 joins (www-data@2607:5300:60:8be::1)
20:25:33 × marvin3 quits (www-data@2607:5300:60:8be::1) (Client Quit)
20:27:27 hexfive joins (~eric@50.35.83.177)
20:31:58 × king_gs quits (~Thunderbi@187.201.220.53) (Read error: Connection reset by peer)
20:34:05 king_gs joins (~Thunderbi@187.201.220.53)
20:34:15 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Read error: No route to host)
20:35:29 × agumonkey quits (~user@88.163.231.79) (Read error: Connection reset by peer)
20:37:00 agumonkey joins (~user@88.163.231.79)
20:40:34 bahamas joins (~lucian@84.232.141.55)
20:41:21 dostoevsky0 joins (~5c42c5384@user/dostoevsky)
20:43:21 × dostoevsky quits (~5c42c5384@user/dostoevsky) (Ping timeout: 276 seconds)
20:43:21 dostoevsky0 is now known as dostoevsky
20:45:13 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 256 seconds)
20:45:56 bahamas joins (~lucian@84.232.141.55)
20:48:44 × odnes quits (~odnes@5-203-251-40.pat.nym.cosmote.net) (Quit: Leaving)
20:50:53 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 256 seconds)
20:54:23 × king_gs quits (~Thunderbi@187.201.220.53) (Read error: Connection reset by peer)
20:55:26 king_gs joins (~Thunderbi@2806:103e:29:99f9:ca77:e08e:3816:239e)
21:11:16 jollygood2 joins (www-data@2607:5300:60:8be::1)
21:12:21 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in)
21:12:44 kraftwerk28 joins (~kraftwerk@178.62.210.83)
21:12:49 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Remote host closed the connection)
21:13:56 × coot quits (~coot@213.134.190.95) (Quit: coot)
21:14:10 × Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
21:14:25 × king_gs quits (~Thunderbi@2806:103e:29:99f9:ca77:e08e:3816:239e) (Ping timeout: 260 seconds)
21:20:00 × michalz quits (~michalz@185.246.204.101) (Remote host closed the connection)
21:20:29 kraftwerk28 joins (~kraftwerk@178.62.210.83)
21:20:33 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Remote host closed the connection)
21:23:26 bahamas joins (~lucian@84.232.141.55)
21:23:53 × jollygood2 quits (www-data@2607:5300:60:8be::1) (Quit: CGI:IRC (EOF))
21:24:22 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
21:25:07 zeenk joins (~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d)
21:25:37 × megaTherion quits (~therion@unix.io) (Quit: ZNC 1.8.2 - https://znc.in)
21:26:01 × agumonkey quits (~user@88.163.231.79) (Ping timeout: 256 seconds)
21:26:26 king_gs joins (~Thunderbi@187.201.220.53)
21:27:37 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 246 seconds)
21:29:01 bahamas joins (~lucian@84.232.141.55)
21:29:07 kraftwerk28 joins (~kraftwerk@178.62.210.83)
21:29:18 jollygood2 joins (www-data@2607:5300:60:8be::1)
21:33:24 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 248 seconds)
21:34:01 megaTherion joins (~therion@mail.unix.io)
21:35:09 bahamas joins (~lucian@84.232.141.55)
21:35:34 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:36:05 × jollygood2 quits (www-data@2607:5300:60:8be::1) (Quit: CGI:IRC (EOF))
21:36:20 jollygood2 joins (www-data@2607:5300:60:8be::1)
21:37:25 <dmj`> free monads are great
21:39:48 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 250 seconds)
21:40:44 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.5)
21:40:46 × kenran quits (~kenran@200116b82b9bc000379afc39a9f09380.dip.versatel-1u1.de) (Quit: WeeChat info:version)
21:41:38 bahamas joins (~lucian@84.232.141.55)
21:42:09 <jollygood2> any estimate when ghc 9.2.3 is coming?
21:42:43 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
21:42:54 Codaraxis joins (~Codaraxis@user/codaraxis)
21:44:57 stackdroid18 joins (14094@user/stackdroid)
21:46:32 causal joins (~eric@50.35.83.177)
21:48:11 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:48:25 × causal quits (~eric@50.35.83.177) (Client Quit)
21:48:42 Tuplanolla joins (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
21:48:47 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 256 seconds)
21:50:47 causal joins (~eric@50.35.83.177)
21:51:03 srz joins (~srz@181.228.49.93)
21:52:48 × causal quits (~eric@50.35.83.177) (Client Quit)
21:53:24 causal joins (~eric@50.35.83.177)
21:53:46 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:54:10 × causal quits (~eric@50.35.83.177) (Client Quit)
21:54:57 causal joins (~user@50.35.83.177)
21:56:23 × king_gs quits (~Thunderbi@187.201.220.53) (Read error: Connection reset by peer)
21:59:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
21:59:15 king_gs joins (~Thunderbi@187.201.220.53)
21:59:20 × causal quits (~user@50.35.83.177) (Client Quit)
22:00:00 causal joins (~user@50.35.83.177)
22:00:02 × causal quits (~user@50.35.83.177) (Client Quit)
22:01:40 causal joins (~user@50.35.83.177)
22:01:41 × Vajb quits (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56) (Read error: Connection reset by peer)
22:02:17 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
22:03:17 × causal quits (~user@50.35.83.177) (Client Quit)
22:03:51 causal joins (~user@50.35.83.177)
22:04:01 × causal quits (~user@50.35.83.177) (Client Quit)
22:04:34 causal joins (~user@50.35.83.177)
22:04:55 abrantesasf joins (~abrantesa@177.137.232.91)
22:05:46 × king_gs quits (~Thunderbi@187.201.220.53) (Ping timeout: 246 seconds)
22:08:35 × abrantesasf quits (~abrantesa@177.137.232.91) (Remote host closed the connection)
22:15:22 srz_ joins (~srz@179.36.117.131)
22:18:00 × srz quits (~srz@181.228.49.93) (Ping timeout: 260 seconds)
22:18:48 × kadobanana quits (~mud@user/kadoban) (Remote host closed the connection)
22:19:14 kadobanana joins (~mud@user/kadoban)
22:20:13 bahamas joins (~lucian@84.232.141.55)
22:20:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
22:23:50 × zeenk quits (~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d) (Quit: Konversation terminated!)
22:24:22 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5)
22:24:36 jargon joins (~jargon@174-22-206-112.phnx.qwest.net)
22:24:48 causal joins (~user@50.35.83.177)
22:24:57 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 248 seconds)
22:25:18 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
22:25:37 king_gs joins (~Thunderbi@187.201.220.53)
22:29:51 vicfred joins (~vicfred@user/vicfred)
22:30:01 <kaol> > let eConst = Endo . const in appEndo (eConst 10 <> eConst 3) undefined
22:30:04 <lambdabot> 10
22:31:18 <kaol> I wanted to wrap a value to just get the first element with whatever it used <> on. Creative use of Endo.
22:35:14 <Unicorn_Princess> State got renamed to MonadState?
22:35:41 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
22:35:46 _srz joins (~srz@181.228.49.93)
22:35:58 <Unicorn_Princess> (the type constructor that is, from Control.Monad.State)
22:36:02 jinsun joins (~jinsun@user/jinsun)
22:36:06 <geekosaur> no
22:36:28 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:36:37 <geekosaur> MonadState is the common functionality. State the type constructor no longer exists, because State is a type alias for StateT Identity
22:36:40 <hpc> data State ... is now type State ... = StateT ...
22:36:41 <[exa]> Unicorn_Princess: MonadState is the typeclass that says that something is able to provide stateful computation
22:37:03 <[exa]> (Unicorn_Princess: have a look at MonadState methods)
22:37:12 <hpc> also look at the MonadState instances
22:37:26 <hpc> most of them aren't actually State
22:37:27 <geekosaur> sorry, data constructor. there is lowercase `state` if you want to replace the old `State` data constructor
22:37:31 <monochrom> Also look at Control.Monad.Trans.State
22:38:04 <Unicorn_Princess> thanks, i guess i'll get reading
22:38:23 × srz_ quits (~srz@179.36.117.131) (Ping timeout: 260 seconds)
22:38:31 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
22:38:52 jinsun joins (~jinsun@user/jinsun)
22:40:17 <[exa]> anyway, I'm kinda noticing that the best recommendation for "learning" many hs packages is "just go read the source/see the instances/...". It may be a bit harsh for newcomers, especially if they come from a language that doesn't read as nice. Great we have haddock that makes this much more natural.
22:41:07 Topsi joins (~Topsi@dyndsl-095-033-019-087.ewe-ip-backbone.de)
22:42:06 <[exa]> the point is, does this kindof property have a name that I could explicitly state, so that people are not so hesitant about opening the source?
22:42:12 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
22:42:32 × nattiestnate quits (~nate@202.138.250.20) (Quit: WeeChat 3.5)
22:42:56 nattiestnate joins (~nate@202.138.250.52)
22:43:20 <Unicorn_Princess> "legible library source"? or "the opposite of C++ standard library code"
22:44:04 <hpc> there was a bit the other day where someone pointed out comment vs lines of code stats for ghc
22:44:11 <hpc> and ghc was over a third comments
22:44:29 <hpc> so to some extent, even when you're reading the code you're still getting documentation anyway
22:44:32 <[exa]> bc people write research papers in there. :D
22:45:01 <[exa]> anyway yeah that's probably "literate code"
22:45:24 <monochrom> The name is "use the source, Luke".
22:45:35 <monochrom> Very popular attitude in C communities.
22:45:37 <[exa]> mmhmmm :]
22:45:47 <[exa]> good
22:45:56 <hpc> also you can learn a lot of new stuff just by reading seemingly unrelated stuff
22:45:57 <monochrom> I disagree with that attitude. Write better docs.
22:46:16 <hpc> it's one thing to read a bunch of continuation passing style tutorials and whatnot
22:46:32 <hpc> it's another to go "i want to parse something", and then go to the source just out of curiosity
22:46:50 <hpc> and there's a parser defined in a way that makes the whole thing obvious
22:47:05 <hpc> here's the "consumed character success" continuation, here's the "end of stream success" continuation, etc
22:47:34 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:47:39 <[exa]> understanding code is insufficiently hyped
22:47:44 <monochrom> Other language communities seem to just fall under two schools. One is like C, "read the source Luke". The other reads neither source nor doc, instead cargo cult from Google searches.
22:47:52 <hpc> haskell library code is ridiculously good
22:49:00 <monochrom> The Haskell community seems to be this odd thing in which much work has been put into making haddock possible, then library authors go on to use it for "you can glean so much from just the types".
22:49:25 <hpc> it's the reverse billy madison, you read the code and learn more than what you're looking for
22:50:40 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:76e8:584c:bd55:70ba) (Read error: Connection reset by peer)
22:51:15 <[exa]> like, we understand this is cool & the right way
22:51:24 bahamas joins (~lucian@84.232.141.55)
22:52:22 <[exa]> I really wanted to ask how to explain someone used to python (or worse) that they are able to just master the package from the ground up by eyeballing it for 5 minutes
22:52:23 <hpc> (the forwards billy madison is of course https://www.youtube.com/watch?v=wKjxFJfcrcA)
22:52:34 × sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection)
22:53:05 <[exa]> skywalker way is good tho. :]
22:53:25 <monochrom> Is that like explaining STEM to politicians and management types?
22:53:44 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
22:55:27 × bahamas quits (~lucian@84.232.141.55) (Ping timeout: 246 seconds)
22:56:32 <monochrom> BTW if you look around, "use the source, Luke" is only slighly less worse than "RTFM" on the ladder of using condescension to hide laziness.
22:57:18 <[exa]> true
22:57:28 <hpc> "use the source luke" isn't that bad
22:57:51 <[exa]> it's got a bit of hope in there, yes :D
22:58:24 <[exa]> nvm guys thanks for ideas
22:58:27 [exa] -> afk
22:59:06 <hpc> "rtfm" implicitly says "why are you even asking, you should know better", and "use the source luke" implicitly says "i am answering the question by answering the higher-order question"
22:59:44 <monochrom> That's not how I've seen it used.
23:00:05 <monochrom> I've only seen it used to rationalize being to proud to write docs.
23:00:14 <monochrom> s/to proud/too proud/
23:00:52 × Topsi quits (~Topsi@dyndsl-095-033-019-087.ewe-ip-backbone.de) (Ping timeout: 248 seconds)
23:01:28 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection)
23:01:33 <darkling> There's a lot to be said for "this is in [link]this FAQ entry", though...
23:01:49 <monochrom> Yes, that I support.
23:04:35 <darkling> It's a self-protective move, much like the others can be, "I'm fed up answering this question repeatedly" being the driving force.
23:05:05 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:05:23 <monochrom> Oh, human psychology is all about self-defense mechanisms.
23:05:51 mmhat joins (~mmh@2001:4090:a246:8044:ee08:6bff:fe09:5315)
23:07:34 <darkling> Who told you to say that? ;)
23:07:59 <monochrom> My brain made me say that. What choice do I have?
23:08:38 <darkling> We believe in free will because we have no choice.
23:08:45 <monochrom> hee hee
23:09:22 Topsi joins (~Topsi@dyndsl-095-033-019-087.ewe-ip-backbone.de)
23:17:09 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 246 seconds)
23:17:32 machinedgod joins (~machinedg@24.105.81.50)
23:27:19 × moonsheep quits (~user@185.154.9.192) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
23:27:51 × chomwitt quits (~chomwitt@2a02:587:dc19:d600:8f70:f0f3:1c35:cd8a) (Ping timeout: 256 seconds)
23:29:45 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
23:35:10 Kaiepi joins (~Kaiepi@156.34.47.253)
23:39:40 jao joins (~jao@211.68.17.95.dynamic.jazztel.es)
23:46:40 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 260 seconds)
23:56:16 bahamas joins (~lucian@84.232.141.55)

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