Home liberachat/#haskell: Logs Calendar

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

00:01:47 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
00:01:57 cheater joins (~Username@user/cheater)
00:03:37 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 240 seconds)
00:03:38 × mmalter quits (~mmalter@88.126.10.237) (Quit: Lost terminal)
00:03:59 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
00:05:51 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
00:11:11 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
00:14:18 × catern quits (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (Read error: Connection reset by peer)
00:14:40 × Tuplanolla quits (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.)
00:17:21 × max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection)
00:20:43 nitrix joins (~nitrix@user/nitrix)
00:24:07 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
00:25:03 × nitrix quits (~nitrix@user/nitrix) (Remote host closed the connection)
00:25:55 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
00:26:24 nitrix joins (~nitrix@user/nitrix)
00:29:25 × nitrix quits (~nitrix@user/nitrix) (Client Quit)
00:30:26 nitrix joins (~nitrix@user/nitrix)
00:30:35 × jgeerds quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 250 seconds)
00:37:09 <hololeap> how would one go about testing the bounds of a dependency on a package? for instance, if I have a package with semigroups listed as a dependency, how would I go about testing to see which version of semigroups is the lowest that still compiles with it?
00:39:30 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
00:40:34 × emf_ quits (~emf@2620:10d:c090:400::5:9a32) (Ping timeout: 250 seconds)
00:41:51 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
00:42:23 <sm> do you use stack or cabal ?
00:42:39 <hololeap> cabal
00:43:38 <sm> run a bunch of test builds like cabal build --constraint 'semigroups == X.Y' -O0
00:44:19 <sm> also, check semigroups' changelog for signs of api change
00:45:15 <hololeap> does anyone actually do this in practice?
00:46:41 machinedgod joins (~machinedg@24.105.81.50)
00:47:00 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
00:48:58 alp joins (~alp@user/alp)
00:50:33 soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net)
00:51:39 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
00:51:58 <hololeap> testing every version bump with every version of every dependency seems unmanagable, but I would think the bounds should have _some_ testing, so what is a compromise that is actually done in practice?
00:56:05 <sshine> hololeap, in practice, I think most people add the currently available package as the lower bound.
00:56:27 Inst[m] joins (~instrmatr@2001:470:69fc:105::1:903e)
00:57:02 <hololeap> ok, that's what it seems like
00:57:06 <sshine> hololeap, in the case of stackage snapshots that may be fine, since others depending on your package wouldn't see it in an older snapshot. but in general, what you're suggesting is something I also considered, but never bothered to test.
00:58:05 <sshine> hololeap, since the lower bound never changes, you could do a binary search on every dependency.
00:59:10 <sshine> hololeap, or rather, step backwards in (manor, minor) until it breaks.
00:59:40 <hololeap> yeah. I suppose this isn't a problem that is specific to haskell/cabal, either.
01:00:03 <sshine> hololeap, what you're solving is that you make your package available to people who depend on really old versions of things without having to bump their versions.
01:00:35 <sshine> hololeap, but I think what's typically more customary, is that if people start depending on new things, they start by bumping their old dependencies to the point where their new dependencies resolve.
01:02:16 <hololeap> the problem is when someone depends on an abandoned package that never get bumps, it may drag down the rest of their environment, so actually knowing what lower bounds work for your package could be very helpful in this scenario
01:02:27 <sshine> hololeap, and, I think, you'll solve some problems if they have multiple dependencies where one is stale and depends on an old package version. in that case they don't need to --allow-newer.
01:02:36 <hololeap> but really, I am just curious about the problem in general
01:02:39 <sshine> right
01:04:05 <sshine> it'd be neat if you could check if a version of a package works cheaper than trying it
01:04:28 lavaman joins (~lavaman@98.38.249.169)
01:04:39 <sshine> I guess a neater solution is to shrink the problem like Unison does :)
01:07:39 <hololeap> this problem gets hairy in the case of gentoo-haskell, where you might have 600 packages installed at once on your system, if you (ab)use it like I do. (I know this is very niche and probably doesn't make sense for most people)
01:08:26 chenqisu1 joins (~chenqisu1@183.217.200.249)
01:08:59 <sshine> right... having your Linux package manager handle Haskell packages is pretty far down most people's lists :P
01:09:11 <sshine> I'd rather learn Nix then.
01:09:19 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
01:10:20 <hololeap> well, I end up sending out a lot of PRs trying to get people to bump their dependencies! :)
01:10:39 <hololeap> or remove certain dependencies... *cough* system-filepath *cough*
01:10:45 × nosewings quits (~ngpc@cpe-68-206-102-85.satx.res.rr.com) (Remote host closed the connection)
01:11:36 <sshine> so... the gentoo-haskell packages have dependencies that aren't in hackage? or are you talking about unnecessary dependencies in hackage packages?
01:12:23 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
01:13:57 <hololeap> we try to keep it so that (ideally) you could install all the packages available at once and not have any problems. in reality this isn't obtainable, but we try to shoot for a high percentage. as a consequence, we are often times patching packages for newer versions of libs or just doing simple bumps in the .cabal file
01:15:02 <hololeap> but on occasion there is a popular package that is not trivial to patch and it just won't compile with newer libs, so we end up omitting the newer libs or "mask" them at the very least
01:16:25 <hololeap> for instance, it's going to be a while before we bring aeson-2 in
01:16:36 <hololeap> there's too little support for it right now
01:16:36 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Read error: Connection reset by peer)
01:16:56 <Inst[m]> Hecate: is there a roadmap for Haskell in 2022?
01:17:12 <Inst[m]> It's often comforting to have a plan, even if deadlines and targets are not met
01:18:16 <hololeap> it's a weird hobby, I admit :)
01:18:42 tavares joins (~tavares@187.19.213.50)
01:18:44 × tavares quits (~tavares@187.19.213.50) (Remote host closed the connection)
01:18:53 <Inst[m]> you could link it to donations, i.e, you underpromise for certain donation thresholds
01:20:33 × soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
01:21:30 dajoer joins (~david@user/gvx)
01:22:30 × Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
01:25:36 × MatthiasG2 quits (~matthias@i6DFA03D9.versanet.de) (Quit: Lost terminal)
01:29:43 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 256 seconds)
01:31:37 <hololeap> I'm not sure enough people would donate for that to make sense. I like using gentoo's package manager for my haskell deps, so there's a personal incentive to work on it
01:36:24 <hololeap> plus it teaches me about gentoo development and haskell/hackage development
01:40:23 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
01:41:05 × jonathanx_ quits (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Remote host closed the connection)
01:41:23 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
01:41:47 <sshine> hololeap, constraint resolution is everybody's favorite hobby. some have wordle, you bump gentoo package constraints.
01:42:06 <hololeap> lol
01:42:13 little_mac joins (~little_ma@2601:410:4300:3ce0:d78:32a5:c637:9190)
01:44:35 sshine is caught up trying to find optimal paths through various wordle clones. -_-
01:48:47 × koolazer quits (~koo@user/koolazer) (Remote host closed the connection)
01:49:10 <EvanR> there's at least 2 wordie, it's very confusing
01:52:05 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:52:05 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:52:05 wroathe joins (~wroathe@user/wroathe)
01:56:56 <sm> hololeap: yes I will sometimes do that manually if I care about installability over a wider range of dep versions. It's not a recurring thing usually, just a one time activity
01:57:26 pavonia joins (~user@user/siracusa)
01:58:18 soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net)
01:58:29 <sm> when installability is less of a priority, I'll just set a more conservative bound, probably checking stackage snapshots or cabal matrix builder for guidance
01:59:53 × notzmv quits (~zmv@user/notzmv) (Remote host closed the connection)
02:00:18 Erutuon joins (~Erutuon@user/erutuon)
02:04:07 <hololeap> makes sense
02:04:07 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
02:04:42 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
02:05:19 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
02:08:31 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:09:37 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
02:12:28 img joins (~img@user/img)
02:12:47 × mmhat quits (~mmh@55d49d8b.access.ecotel.net) (Ping timeout: 256 seconds)
02:14:09 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
02:18:43 califax- joins (~califax@user/califx)
02:20:57 × soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 240 seconds)
02:21:42 × Ariakenom_ quits (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
02:22:25 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
02:23:13 × little_mac quits (~little_ma@2601:410:4300:3ce0:d78:32a5:c637:9190) (Remote host closed the connection)
02:23:21 × califax quits (~califax@user/califx) (Ping timeout: 276 seconds)
02:23:22 califax- is now known as califax
02:27:33 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
02:29:45 × alp quits (~alp@user/alp) (Ping timeout: 250 seconds)
02:30:23 mmhat joins (~mmh@55d44844.access.ecotel.net)
02:32:51 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
02:33:04 ProfSimm joins (~ProfSimm@87.227.196.109)
02:34:53 × chenqisu1 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
02:37:26 × xff0x quits (~xff0x@2001:1a81:5244:c900:2c67:9c0a:1653:d1e3) (Ping timeout: 260 seconds)
02:39:04 xff0x joins (~xff0x@2001:1a81:525e:1300:a39:53d4:f8b2:1b4f)
02:43:50 ss4 joins (~wootehfoo@user/wootehfoot)
02:43:54 razetime joins (~quassel@49.207.209.26)
02:43:57 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 240 seconds)
02:46:53 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
02:50:45 × alx741 quits (~alx741@157.100.197.240) (Quit: alx741)
02:51:41 little_mac joins (~little_ma@2601:410:4300:3ce0:9964:9851:99b7:1e83)
02:54:32 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
03:00:18 × burnsidesLlama quits (~burnsides@dhcp168-031.wadham.ox.ac.uk) (Remote host closed the connection)
03:02:07 leungbk joins (~brian@cpe-142-129-149-172.socal.res.rr.com)
03:03:26 zebrag joins (~chris@user/zebrag)
03:13:00 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:19:30 res0nat0r08 joins (~Fletch@dia.whatbox.ca)
03:20:16 Taneb0 joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
03:20:31 × srk quits (~sorki@user/srk) (Remote host closed the connection)
03:20:31 × derelict quits (~derelict@user/derelict) (Quit: bye)
03:20:32 × ldlework quits (~hexeme@user/hexeme) (Remote host closed the connection)
03:20:49 srk joins (~sorki@user/srk)
03:20:51 derelict joins (derelict@user/derelict)
03:21:25 × welterde quits (welterde@thinkbase.srv.welterde.de) (Ping timeout: 240 seconds)
03:21:25 × res0nat0r0 quits (~Fletch@dia.whatbox.ca) (Ping timeout: 240 seconds)
03:22:45 welterde joins (~welterde@thinkbase.srv.welterde.de)
03:23:22 hexeme joins (~hexeme@user/hexeme)
03:24:13 × Taneb quits (~Taneb@runciman.hacksoc.org) (Ping timeout: 240 seconds)
03:25:06 × alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
03:26:42 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
03:28:40 × k8yun quits (~k8yun@198-48-158-40.cpe.pppoe.ca) (Quit: Leaving)
03:29:10 k8yun joins (~k8yun@198-48-158-40.cpe.pppoe.ca)
03:33:40 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
03:39:57 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
03:41:25 × td_ quits (~td@muedsl-82-207-238-085.citykom.de) (Ping timeout: 256 seconds)
03:42:43 soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net)
03:42:52 td_ joins (~td@muedsl-82-207-238-241.citykom.de)
03:49:21 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds)
03:50:17 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
03:50:19 vglfr joins (~vglfr@coupling.penchant.volia.net)
03:52:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
03:56:57 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
03:59:37 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
04:01:32 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
04:01:32 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
04:01:32 wroathe joins (~wroathe@user/wroathe)
04:11:06 shriekingnoise_ joins (~shrieking@201.231.16.156)
04:11:38 random-jellyfish joins (~random-je@user/random-jellyfish)
04:12:21 × shriekingnoise quits (~shrieking@201.231.16.156) (Ping timeout: 256 seconds)
04:15:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
04:21:58 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
04:21:58 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
04:21:58 wroathe joins (~wroathe@user/wroathe)
04:26:17 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
04:31:35 n_blownapart joins (~nb@135-180-218-226.fiber.dynamic.sonic.net)
04:37:37 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:38:25 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
04:38:35 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
04:39:22 × mmhat quits (~mmh@55d44844.access.ecotel.net) (Quit: WeeChat 3.4)
04:42:06 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
04:50:19 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
04:54:30 × xff0x quits (~xff0x@2001:1a81:525e:1300:a39:53d4:f8b2:1b4f) (Ping timeout: 250 seconds)
04:55:15 xff0x joins (~xff0x@2001:1a81:525e:1300:8f21:adc2:1c05:78b)
04:55:39 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 256 seconds)
04:55:57 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 240 seconds)
04:58:24 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:00:11 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
05:01:13 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
05:04:08 ario joins (~ario@159.65.220.102)
05:06:13 lavaman joins (~lavaman@98.38.249.169)
05:10:37 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
05:12:39 × soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
05:18:38 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
05:22:37 × leungbk quits (~brian@cpe-142-129-149-172.socal.res.rr.com) (Ping timeout: 240 seconds)
05:23:05 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
05:24:35 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
05:24:56 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
05:28:50 ardell joins (~ardell@user/ardell)
05:30:26 deadmarshal joins (~deadmarsh@95.38.114.62)
05:33:35 leungbk joins (~brian@cpe-142-129-149-172.socal.res.rr.com)
05:34:14 random-jellyfish joins (~random-je@user/random-jellyfish)
05:34:14 <Inst[m]> why is it
05:34:19 <Inst[m]> that no one covers until?
05:35:51 <Inst[m]> or more specifically, why is Richard Bird covering until?
05:36:16 <dsal> covers until what?
05:36:23 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
05:38:05 wyrd_ joins (~wyrd@gateway/tor-sasl/wyrd)
05:39:08 <EvanR> :t until
05:39:08 <lambdabot> (a -> Bool) -> (a -> a) -> a -> a
05:39:24 <EvanR> cool
05:39:26 <Inst[m]> it's Haskell's for loop
05:39:29 <Inst[m]> that no one ever uses
05:39:58 <EvanR> well it's limited to a very specific kind of loop
05:40:04 <Inst[m]> until x y z = if x z then z else until x y (y z)
05:40:15 <EvanR> @src until
05:40:15 <lambdabot> until p f x | p x = x
05:40:15 <lambdabot> | otherwise = until p f (f x)
05:40:15 <Inst[m]> also there's no warning on infinite loops with it, but Bird covers it
05:40:18 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
05:41:03 <Inst[m]> I'm more wondering why people haven't stolen until yet, simply because of the syntax, but it's probably because most languages don't have tco
05:41:08 <EvanR> also this seems more like a `while' loop xD
05:41:22 <EvanR> which are known to diverge from time to time
05:44:39 <Inst[m]> it doesn't really have much of an advantage over:
05:44:45 Inst[m] uploaded an image: (14KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/tNDqnCYuezDWWCsWYeBPAcGo/image.png >
05:46:12 <EvanR> they aren't really comparable
05:46:30 <Inst[m]> i mean it's expression-based vs syntax-based language, also FP vs IP
05:46:36 <Inst[m]> erm, statement-based language
05:46:54 <janus> hololeap: if you need help to advance your PR for happstack-server, i'll happily help
05:47:01 <Inst[m]> i was just wondering why someone didn't steal until syntax
05:47:09 <EvanR> what syntax
05:48:37 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 240 seconds)
05:49:09 <dsal> It's just a function.
05:49:13 <dsal> There are a lot of functions.
05:49:16 <dsal> Have you tried fix?
05:51:11 <janus> Inst[m]: i think a big part of the reason is that if you need imperative stuff like loops, you probably also need some effect. and then you need something like monad-loops
05:51:27 Erutuon joins (~Erutuon@user/erutuon)
05:52:33 × k8yun quits (~k8yun@198-48-158-40.cpe.pppoe.ca) (Quit: Leaving)
05:52:44 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
05:53:08 <EvanR> untilM :: Monad m => m a -> m Bool -> m [a]
05:53:17 <EvanR> in which case the condition test is conveniently 2nd
05:53:56 <EvanR> "The condition is evaluated after the loop body" ah, that's why
05:53:57 × califax quits (~califax@user/califx) (Ping timeout: 276 seconds)
05:54:20 <EvanR> which is different from until. And why there's no standard for loops
05:54:26 <EvanR> too many to choose from
05:54:50 <janus> yeah, you can get into analysis paralysis :O
05:55:01 <janus> i like https://hackage.haskell.org/package/break-1.0.2/docs/Control-Break.html
05:55:31 <janus> because breaking surely subsumes all of them. and then you don't have to figure out if it tests before or after
05:55:47 <janus> but otoh it is the most imperative of all
05:55:55 califax joins (~califax@user/califx)
05:55:59 <janus> anyway, i like gabriel's packages, they always have good docs
05:56:25 <EvanR> I like to see 6 year old packages still working xD
05:56:47 <janus> why wouldn't it? the bounds are super loose
05:57:15 <janus> and if it broke, i'd trust gabriel to fix it
05:57:32 <EvanR> from the looks of it, it can't break, it's too simple!
05:57:46 <janus> ;)
05:57:50 <EvanR> lol "loose bounds" as grounds for being super reliable
05:58:25 <EvanR> lets all burn our braz-- version bounds
05:58:42 <janus> well if the loose bounds are also fortune telling, that would make them more reliable than others :P
06:01:57 × Andrew quits (andrew@andrewyu.org) (Ping timeout: 240 seconds)
06:02:13 <EvanR> if you want subsumption, code your loop using Cont monads xD
06:02:28 <EvanR> which subsumes all loops and more
06:05:17 euouae joins (~euouae@user/euouae)
06:05:37 <euouae> Hello are the hackage archive packages digitally signed?
06:05:49 <euouae> or at least some of them?
06:09:33 <sshine> I don't think so.
06:09:35 × phma quits (phma@2001:5b0:211f:7008:1fdf:50b9:29f4:b115) (Read error: Connection reset by peer)
06:09:38 <euouae> got it, thank you
06:10:32 phma joins (phma@2001:5b0:211c:1a98:48d4:386a:82f8:d37)
06:11:03 deadmarshal joins (~deadmarsh@95.38.114.62)
06:11:48 oscurochu joins (~oscurochu@097-096-050-227.res.spectrum.com)
06:12:36 <sshine> euouae, it might be worth considering for https://dev.flora.pm/
06:13:02 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 260 seconds)
06:13:49 <euouae> sshine the search bar does not respond here
06:13:56 × n_blownapart quits (~nb@135-180-218-226.fiber.dynamic.sonic.net) (Quit: Lost terminal)
06:14:07 <euouae> firefox 96.0
06:16:00 <random-jellyfish> can I get a state monad to return an infinite list? e.g. I want to generate an infinite list of random numbers
06:16:19 <sshine> euouae, yeah, I just realize that page doesn't work very well.
06:16:27 × oscurochu quits (~oscurochu@097-096-050-227.res.spectrum.com) (Ping timeout: 256 seconds)
06:16:29 <sshine> euouae, I thought it was more functional, never mind. :)
06:16:37 <c_wraith> random-jellyfish: sure. But... You can do that without, too!
06:16:56 <random-jellyfish> without the state monad?
06:17:00 <c_wraith> yes
06:17:14 × mrkajetanp quits (~mrkajetan@88.98.245.28) (Ping timeout: 260 seconds)
06:17:16 <wavemode> randoms
06:17:19 <sshine> https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-State-Lazy.html
06:17:28 <c_wraith> But the most naive State version works with... yeah, that version
06:17:58 mrkajetanp joins (~mrkajetan@88.98.245.28)
06:18:07 <wavemode> :t randoms
06:18:09 <lambdabot> (Random a, RandomGen g) => g -> [a]
06:18:38 <random-jellyfish> okay
06:18:57 <random-jellyfish> but as an exercise...how would I do that with a state monad?
06:19:51 <c_wraith> with exactly what sshine linked to
06:20:17 <c_wraith> Just write the naive code, pretend you don't care how much it leaks...
06:20:27 <sshine> random-jellyfish, so... RandomGen is a type class, so you'd need a concrete implementation of it that works for a State monad. https://hackage.haskell.org/package/random-1.2.1/docs/System-Random.html#t:RandomGen
06:20:32 <c_wraith> though to be fair, it's like that randoms leaks too
06:20:35 <c_wraith> *likely
06:20:51 <sshine> random-jellyfish, it looks like StateGen might work: https://hackage.haskell.org/package/random-1.2.1/docs/System-Random-Stateful.html#t:StateGen
06:21:15 <sshine> random-jellyfish, I'd just use StdGen :)
06:21:26 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
06:22:11 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:26:33 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
06:26:59 gentauro joins (~gentauro@user/gentauro)
06:27:54 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
06:30:47 k8yun joins (~k8yun@198-48-158-40.cpe.pppoe.ca)
06:30:49 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
06:35:13 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
06:35:30 <ski> random-jellyfish : make sure to use `newStdGen' (not `getStdGen')
06:39:18 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
06:39:48 nitrix parts (~nitrix@user/nitrix) (Leaving)
06:39:58 notzmv joins (~zmv@user/notzmv)
06:41:51 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:44:28 megeve_ is now known as megeve
06:47:17 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 256 seconds)
06:49:02 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
06:49:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
06:53:02 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:53:19 img joins (~img@user/img)
06:54:17 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
06:59:52 deadmarshal joins (~deadmarsh@95.38.114.62)
07:01:04 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
07:04:18 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
07:06:13 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
07:07:49 mikoto-chan joins (~mikoto-ch@213.177.151.239)
07:15:37 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
07:18:44 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
07:20:13 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
07:20:20 img joins (~img@user/img)
07:20:43 × jespada quits (~jespada@87.74.36.188) (Ping timeout: 256 seconds)
07:23:03 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
07:24:02 jespada joins (~jespada@87.74.36.188)
07:27:17 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
07:28:08 messier102 joins (~messier10@user/messier102)
07:30:55 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
07:34:20 × wavemode quits (~wavemode@2601:241:0:fc90:e107:b5f8:8bcd:8e3a) (Ping timeout: 256 seconds)
07:36:58 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
07:44:19 <hololeap> janus: I was waiting to see what would happen with this PR, but it doesn't look like it's going anywhere currently
07:44:30 <hololeap> https://github.com/Gabriel439/Haskell-Turtle-Library/issues/54
07:44:39 <hololeap> *issue, not PR
07:45:10 <hololeap> janus: but you can pull in my PR if you want. I'll un-draft it
07:46:41 gehmehgeh joins (~user@user/gehmehgeh)
07:50:36 <Sqaure> is there some way to find unused code in a project?
07:52:54 xkuru joins (~xkuru@user/xkuru)
07:52:59 <hololeap> there's warnings you can turn on
07:53:21 <hololeap> I think -Wall has most of them
07:55:57 × little_mac quits (~little_ma@2601:410:4300:3ce0:9964:9851:99b7:1e83) (Remote host closed the connection)
07:56:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622) (Remote host closed the connection)
07:58:40 <hololeap> actually, -W is all you need: https://downloads.haskell.org/ghc/8.10.6/docs/html/users_guide/using-warnings.html#ghc-flag--W
07:59:16 <hololeap> those four -Wunused-* warnings
08:02:10 oscurochu joins (~oscurochu@097-096-050-227.res.spectrum.com)
08:06:40 chenqisu1 joins (~chenqisu1@183.217.200.249)
08:06:48 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
08:06:48 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
08:06:48 turlando joins (~turlando@user/turlando)
08:08:20 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
08:11:38 × oscurochu quits (~oscurochu@097-096-050-227.res.spectrum.com) (Remote host closed the connection)
08:11:56 oscurochu joins (~oscurochu@097-096-050-227.res.spectrum.com)
08:12:13 × euouae quits (~euouae@user/euouae) (Quit: )
08:12:51 Natch joins (~natch@c-4db8e255.014-297-73746f25.bbcust.telenor.se)
08:15:03 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
08:23:29 × eoiles[m] quits (~eoilesmat@2001:470:69fc:105::1:6164) (Quit: You% have% been% kicked% for% being% idle)
08:23:33 × codygman[m] quits (~codygman@2001:470:69fc:105::b4ba) (Quit: You% have% been% kicked% for% being% idle)
08:23:45 Graham31415 joins (~Graham314@213.237.82.193)
08:24:55 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
08:25:42 Jing joins (~hedgehog@240e:390:7c53:a7e1:30fc:7acd:1f91:844b)
08:32:46 × oscurochu quits (~oscurochu@097-096-050-227.res.spectrum.com) (Remote host closed the connection)
08:37:32 <hololeap> what is a .hs-boot file?
08:38:31 <hololeap> oh, found it... nvm
08:38:37 <pavonia> I think it's created to resolve dependencies if you have mutually recursive modules
08:39:28 <hololeap> yeah
08:39:28 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
08:40:21 vglfr joins (~vglfr@coupling.penchant.volia.net)
08:41:25 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
08:43:09 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
08:43:43 Tuplanolla joins (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi)
08:44:01 × leungbk quits (~brian@cpe-142-129-149-172.socal.res.rr.com) (Ping timeout: 256 seconds)
08:50:25 <Hecate> < Inst[m]> Hecate: is there a roadmap for Haskell in 2022? // Not that I know of
08:56:54 leungbk joins (~brian@cpe-142-129-149-172.socal.res.rr.com)
08:57:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622)
08:57:51 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
09:00:13 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
09:00:27 × k8yun quits (~k8yun@198-48-158-40.cpe.pppoe.ca) (Ping timeout: 256 seconds)
09:00:40 × xbreu quits (~xbreu@2001:470:69fc:105::1:5061) (Quit: You have been kicked for being idle)
09:01:15 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
09:01:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622) (Ping timeout: 240 seconds)
09:01:23 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
09:04:53 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
09:05:04 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
09:15:25 × mcglk quits (~mcglk@131.191.49.120) (Ping timeout: 256 seconds)
09:15:52 mcglk joins (~mcglk@131.191.49.120)
09:17:39 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
09:17:39 allbery_b joins (~geekosaur@xmonad/geekosaur)
09:17:42 allbery_b is now known as geekosaur
09:19:19 MatthiasG2 joins (~matthias@i6DFA03D9.versanet.de)
09:21:11 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
09:21:26 LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao)
09:24:00 lavaman joins (~lavaman@98.38.249.169)
09:24:01 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
09:25:57 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 250 seconds)
09:28:50 max22- joins (~maxime@2a01cb088335980099495edec395a55d.ipv6.abo.wanadoo.fr)
09:33:26 yauhsien joins (~yauhsien@49.216.190.89)
09:35:01 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
09:38:11 × chenqisu1 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
09:41:05 mc47 joins (~mc47@xmonad/TheMC47)
09:41:57 × APic quits (apic@apic.name) (Ping timeout: 240 seconds)
09:41:58 × yauhsien quits (~yauhsien@49.216.190.89) (Read error: Connection reset by peer)
09:44:58 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
09:48:04 ksqsf joins (~user@2001:da8:d800:611:a0b5:a752:45e1:ee6e)
09:48:43 coot joins (~coot@213.134.190.95)
09:49:07 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:51:20 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
09:59:56 namkeleser joins (~namkelese@124.188.192.57)
10:04:14 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
10:04:37 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
10:05:16 oscurochu joins (~oscurochu@097-096-050-227.res.spectrum.com)
10:06:05 <oscurochu> There are a bunch of http servers for haskell... which one should i use and why?
10:06:25 <oscurochu> im looking to build a backend server.
10:08:03 MajorBiscuit joins (~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
10:08:16 <Rembane> oscurochu: I like Scotty because it's a very simple HTTP server that's not too hairy to get setup. Servant is cool because types are cool.
10:09:31 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
10:10:03 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
10:12:23 <Las[m]> Does anyone know whether there's a flag to warn on .. imports?
10:16:40 × chomwitt quits (~chomwitt@2a02:587:dc07:dd00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
10:17:35 × MajorBiscuit quits (~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 252 seconds)
10:18:01 <geekosaur> if you mean Type(..), no
10:18:53 <geekosaur> if anything I'd expect the opposite, the most common patterns are Type(..) for all data constructors or Type for none (and then smart constructors)
10:19:25 alp joins (~alp@user/alp)
10:20:57 fef joins (~thedawn@user/thedawn)
10:25:21 __monty__ joins (~toonn@user/toonn)
10:25:55 × __monty__ quits (~toonn@user/toonn) (Client Quit)
10:26:13 __monty__ joins (~toonn@user/toonn)
10:28:03 × ksqsf quits (~user@2001:da8:d800:611:a0b5:a752:45e1:ee6e) (Ping timeout: 256 seconds)
10:29:05 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
10:30:55 ksqsf joins (~user@2001:da8:d800:611:a0b5:a752:45e1:ee6e)
10:31:03 zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:b4e8:6f53:6fdf:55e6)
10:36:27 × max22- quits (~maxime@2a01cb088335980099495edec395a55d.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
10:37:15 max22- joins (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
10:39:29 × oscurochu quits (~oscurochu@097-096-050-227.res.spectrum.com) (Read error: Connection reset by peer)
10:48:37 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
10:48:57 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
10:50:11 <ksqsf> I'm using a mirror of Hackage, but Cabal upload wanted to upload to the mirror site. Is there any cabal config that sets the proper Hackage API root?
10:52:38 mc47 joins (~mc47@xmonad/TheMC47)
10:53:53 jakalx joins (~jakalx@base.jakalx.net)
10:55:18 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:57:11 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
10:58:17 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
11:00:36 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
11:01:02 Taneb0 is now known as Taneb
11:01:16 gehmehgeh joins (~user@user/gehmehgeh)
11:06:49 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
11:08:29 geekosaur joins (~geekosaur@xmonad/geekosaur)
11:12:37 tfeb joins (~tfb@5.133.43.132)
11:13:34 tubogram4 joins (~tubogram@user/tubogram)
11:15:56 × tfeb quits (~tfb@5.133.43.132) (Client Quit)
11:20:11 CHUD joins (~CHUD@dhcp6353.kent.ac.uk)
11:22:00 × tubogram4 quits (~tubogram@user/tubogram) (Quit: See ya later!)
11:22:22 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
11:24:57 tubogram4 joins (~tubogram@user/tubogram)
11:25:22 × xff0x quits (~xff0x@2001:1a81:525e:1300:8f21:adc2:1c05:78b) (Ping timeout: 250 seconds)
11:25:37 fendor joins (~fendor@91.141.79.239.wireless.dyn.drei.com)
11:26:06 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
11:26:26 xff0x joins (~xff0x@2001:1a81:525e:1300:5087:4f80:f91e:3652)
11:27:34 ec joins (~ec@gateway/tor-sasl/ec)
11:32:19 × Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Ping timeout: 256 seconds)
11:38:39 <CHUD> I get an error whenever I try to run this distance :: double distance x1 y1 x2 y2= sqrt ((x2-x1)^2 + (y2-y1)^2)
11:39:04 <geekosaur> :t sqrt
11:39:05 <lambdabot> Floating a => a -> a
11:39:10 <geekosaur> :t (^)
11:39:11 <lambdabot> (Integral b, Num a) => a -> b -> a
11:39:57 <CHUD> they are different types
11:40:53 <geekosaur> you might show the error, but I already see a problem if you didn't include the parameter types
11:41:42 <geekosaur> > let distance :: Double; distance x1 y1 x2 y2 = sqrt ((x2-x1)^2 + (y2-y1)^2) in distance 1 2 1 2
11:41:43 <lambdabot> error:
11:41:43 <lambdabot> • Couldn't match expected type ‘Double’
11:41:43 <lambdabot> with actual type ‘a0 -> a0 -> a0 -> a0 -> a0’
11:42:16 ardell_ joins (~ardell@user/ardell)
11:42:27 <CHUD> so I need to say I am expecting 4 doubles and say I am expecting the return type to also be a double
11:42:51 × ardell quits (~ardell@user/ardell) (Ping timeout: 256 seconds)
11:43:15 <geekosaur> > let distance :: Double -> Double -> Double -> Double -> Double; distance x1 y1 x2 y2 = sqrt ((x2-x1)^2 + (y2-y1)^2) in distance 1 2 1 2
11:43:16 <lambdabot> 0.0
11:43:34 Topsi joins (~Tobias@dyndsl-095-033-026-182.ewe-ip-backbone.de)
11:44:18 <geekosaur> > let distance :: Double -> Double -> Double -> Double -> Double; distance x1 y1 x2 y2 = sqrt ((x2-x1)^2 + (y2-y1)^2) in distance 1 1 2 2
11:44:20 <lambdabot> 1.4142135623730951
11:44:38 <geekosaur> would help if I read the parameters correctly :>
11:45:32 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:46:57 <CHUD> so I put distance :: Double -> Double -> Double -> Double -> Double distance x1 y1 x2 y2= sqrt ((x2-x1)^2 + (y2-y1)^2) but I was wondering why did you put let in front of the first line?
11:47:16 <CHUD> I there a way to do multiline on IRC?
11:48:02 <geekosaur> no, and lambdabot only does expressions so I had to do it with a let-in
11:48:07 <c_wraith> not really. Using the pastebin is recommended
11:48:40 <geekosaur> % distance :: Double -> Double -> Double -> Double -> Double; distance x1 y1 x2 y2 = sqrt ((x2-x1)^2 + (y2-y1)^2)
11:48:40 <yahb> geekosaur:
11:48:46 <geekosaur> % distance 1 1 2 2
11:48:46 <yahb> geekosaur: 1.4142135623730951
11:48:57 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 240 seconds)
11:49:06 <CHUD> Ok, cool, thank you
11:49:10 <geekosaur> yahb is actual ghci. still doesn't do multiline though
11:49:12 × Unhammer quits (~Unhammer@user/unhammer) (Ping timeout: 250 seconds)
11:49:27 × Graham31415 quits (~Graham314@213.237.82.193) (Quit: Client closed)
11:50:18 APic joins (apic@apic.name)
11:56:41 × max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 256 seconds)
11:58:53 max22- joins (~maxime@2a01cb08833598005486a79f6b483be0.ipv6.abo.wanadoo.fr)
12:00:55 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
12:01:15 ec joins (~ec@gateway/tor-sasl/ec)
12:01:22 alx741 joins (~alx741@157.100.197.240)
12:01:46 × xff0x quits (~xff0x@2001:1a81:525e:1300:5087:4f80:f91e:3652) (Ping timeout: 250 seconds)
12:03:18 Unhammer joins (~Unhammer@user/unhammer)
12:07:24 RFV joins (~Thunderbi@135.red-88-5-244.dynamicip.rima-tde.net)
12:08:47 × RFV quits (~Thunderbi@135.red-88-5-244.dynamicip.rima-tde.net) (Client Quit)
12:14:34 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
12:15:23 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 256 seconds)
12:21:23 <CHUD> Is using the || operator appropriate here? https://paste.tomsmeding.com/cZqd2g4N
12:22:18 <CHUD> When I checked it first time I kept getting an error, I think it was an indentation issue but it seems to work now
12:23:37 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
12:23:39 <geekosaur> it's fine
12:23:42 <byorgey> CHUD: looks OK to me, assuming the intention is that either of those two passwords should work
12:24:01 xff0x joins (~xff0x@2001:1a81:525e:1300:5087:4f80:f91e:3652)
12:25:50 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
12:26:57 <CHUD> I tried to initially solve it in replit and I got a scope error https://paste.tomsmeding.com/PwYSFVD8 I don't understand why though
12:28:01 <geekosaur> I'd have to see more, but by itself the error is correct
12:30:00 <CHUD> https://replit.com/join/olbucvxubu-sr53
12:30:05 <geekosaur> if I had to guess I'd say you needed to use multiline input
12:31:34 <CHUD> I got even more errors :/ f
12:31:54 <geekosaur> indentation
12:34:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:39:28 <CHUD> geekosaur: thanks dude
12:40:36 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
12:41:03 mc47 joins (~mc47@xmonad/TheMC47)
12:43:40 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
12:43:57 × turlando quits (~turlando@user/turlando) (Ping timeout: 256 seconds)
12:44:41 oscurochu joins (~oscurochu@097-096-050-227.res.spectrum.com)
12:45:00 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:46:13 × cynomys quits (~cynomys@user/cynomys) (Ping timeout: 256 seconds)
12:46:18 <Inst[m]> sort of embarrassing
12:46:25 <geekosaur> at this point you might want to learn about guards
12:46:25 <Inst[m]> class Monad m => MonadReader r m | m -> r where
12:46:42 <Inst[m]> wait, was that in reply to me?
12:46:46 <geekosaur> no
12:46:53 <geekosaur> that was to CHUD
12:46:57 <Inst[m]> why is there a | in the class definition? I checked Haskell Report
12:47:14 <Inst[m]> is it valid to put a | in a class definition?
12:47:15 <geekosaur> it's called a functional dependency, and it's not in the Report
12:47:23 <Inst[m]> thank you so much
12:47:44 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/functional_dependencies.html
12:48:13 <Inst[m]> https://wiki.haskell.org/Functional_dependencies
12:48:46 <CHUD> geekosaur: yeah, it's in lecture 2, shall I jump to it now? I'm up to exercise 7 from the pset
12:48:57 × fendor quits (~fendor@91.141.79.239.wireless.dyn.drei.com) (Remote host closed the connection)
12:49:21 deadmarshal joins (~deadmarsh@95.38.114.62)
12:49:23 <geekosaur> CHUD, probably not yet. but this looks like it'll show you why we use guards :)
12:50:44 <geekosaur> there's also MultiWayIf but I assume they don't want you to use extensions either
12:50:52 zincy joins (~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4)
12:51:06 <CHUD> geekosaur: what are extensions?
12:51:10 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 250 seconds)
12:51:36 <geekosaur> extennsions to standard Haskell as defined in the Haskell Report
12:51:46 <geekosaur> ghc has a bunch of extensions
12:51:54 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
12:51:54 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
12:51:54 turlando joins (~turlando@user/turlando)
12:52:13 <CHUD> I think I should use the bare minimum I don't think for assessments they will allows anything except a basic text editor and the terminal
12:53:57 × APic quits (apic@apic.name) (Ping timeout: 240 seconds)
12:54:27 <CHUD> Do I always include the type annotation/signature in a programme?
12:54:55 <geekosaur> it's generally a good idea
12:55:12 <geekosaur> haskell doesn't require it, but it often makes tracking down type errors easier
12:55:56 <messier102> A good rule of thumb is to explicitly annotate your function types, while local definitions can be left to automatic inference
12:56:15 <Inst[m]> if it's for uni, you have a style guide and it probably requires type sigs / annotations
12:57:05 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
12:57:13 <CHUD> I think if it helps track type errors I will include it
12:57:32 <CHUD> especially while learning, it's probably best to at this stage
12:57:38 <Inst[m]> type annotations are usually for the dev / reader, i.e, it makes it easier to understand what the functions actually do
12:58:04 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:58:13 <geekosaur> they're also useful when working with numbers, since haskell will happily infer nonsense like (Integral a, Fractional a) => a
12:58:33 <geekosaur> and putting type ascriptions everywhere will help you localize where you made the mistake
12:58:35 <Inst[m]> iirc, the stuff HLS suggests to your editor, what is that called again?
12:58:58 × zincy quits (~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) (Remote host closed the connection)
12:59:14 <messier102> Inst[m]: type lenses?
13:00:01 <messier102> https://haskell-language-server.readthedocs.io/en/latest/features.html#add-type-signature
13:00:09 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
13:00:15 <Inst[m]> i'm sort of dependent on type lenses :(
13:01:31 <geekosaur> I'll also mention that ghc will almost always infer the most general type possible for something, but you may want to constrain it beyond that and a type signature will let you do so
13:01:46 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:01:57 × oscurochu quits (~oscurochu@097-096-050-227.res.spectrum.com) (Remote host closed the connection)
13:02:05 <messier102> function type inference is nice for interactive stuff, but I feel like for anything beyond toy snippets it's a mistake to rely on
13:02:31 <messier102> Rust made the right choice to require explicit signatures imho
13:02:40 <Inst[m]> hmmm, what happens if i install haskell platform despite having GHCup installed?
13:02:49 <geekosaur> you can enable that
13:03:01 <maerwald> Inst[m]: nothing
13:03:17 <maerwald> Inst[m]: which GHC is picked depends on how your PATH variable is configured
13:03:29 <maerwald> run `which ghc` to see
13:03:35 <geekosaur> -Werror=missing-signatures iirc
13:03:51 <Inst[m]> just going to install it, see what happens
13:04:21 <geekosaur> I thought the platform was gone, tbh
13:04:30 <maerwald> Inst[m]: each ghc installation has its own global pkg database... they don't conflict. cabal however only distinguishes compilers by version
13:04:52 <maerwald> that can (in some cases) cause trouble
13:04:55 <maerwald> but not generally
13:05:04 <Inst[m]> i have no idea where this comes from
13:05:05 <geekosaur> the preferred way to do things is to use stack or cabal v2, not install a bunch of libs globally that you then can't safely upgrade for a project that needs something newer
13:05:09 <Inst[m]> https://downloads.haskell.org/~platform/8.6.5/
13:05:19 <Inst[m]> just hoping it comes with winghci or something like that
13:05:20 <messier102> geekosaur: thank you
13:05:22 <maerwald> Inst[m]: on windows?
13:05:29 <maerwald> Please use chocolatey or ghcup on windows
13:05:34 <maerwald> platform is not supported anymore
13:05:45 <maerwald> we won't be helping you :p
13:06:43 <Inst[m]> i just wish i weren't a freaking skid, otherwise i'd work on projects improving windows IDE etc support
13:07:02 × the_proffesor quits (~theproffe@user/theproffesor) (Ping timeout: 240 seconds)
13:08:15 <Inst[m]> although tbh given tendencies in haskell community, the language would probably fork into multiple custom preludes if the userbase was 10x larger
13:08:36 <geekosaur> there are already multiple custom preludes
13:08:41 <maerwald> xD
13:09:08 <Inst[m]> there are, but they haven't forked the language
13:09:10 <maerwald> Inst[m]: if you have knowledge about MSIX installers, lets me know
13:09:14 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
13:09:33 <Inst[m]> it's somethign you guys are actively working on?
13:09:34 <Inst[m]> great to hear
13:10:03 <maerwald> it's just an idea to get something into MS store
13:10:10 <maerwald> e.g. ghcup or GHC bindist itself
13:10:38 <maerwald> we have exactly one GHC devs who knows windows, so...
13:10:52 × ksqsf quits (~user@2001:da8:d800:611:a0b5:a752:45e1:ee6e) (Remote host closed the connection)
13:11:14 <messier102> I think you don't need to package as MSIX for the updated Windows store, do you?
13:11:24 <Inst[m]> you'd actually be better off trying to turn an experienced windows dev into a haskeller
13:11:55 lavaman joins (~lavaman@98.38.249.169)
13:11:57 <maerwald> Inst[m]: they're too pragmatic to waste their time on something like that
13:11:58 <Inst[m]> it's great fun selling haskell as a scam, i.e, "if you use defer type errors, it's almost like it's a dynamic language!"
13:12:08 <geekosaur> I thought the HF was supposed to be working on improving that situation
13:12:31 <Inst[m]> they probably are, but outsourced it to maerwald
13:12:31 <maerwald> geekosaur: they'd support someone spearheading MS store inclusion
13:12:45 <maerwald> exactly
13:13:00 <Inst[m]> i'd love it too, if it could save me 90 minutes getting someone to get VSC / GHCup installed and configured
13:13:03 × Philonous quits (~Philonous@user/philonous) (Quit: ZNC - https://znc.in)
13:13:10 <maerwald> the main issue is msys2
13:13:28 <geekosaur> I meant getting windows devs, and more generally improving the windows experience
13:13:33 Philonous joins (~Philonous@user/philonous)
13:13:46 <geekosaur> msys2 is a lousy way to get windows support
13:13:53 <Inst[m]> lol btw anyone know how to get runghc to support RTS options?
13:14:00 <maerwald> ghcup/cabal/GHC/stack all need a working msys2 installation... both stack and ghcup bootstrap an msys2 themselves... and msys2 is really hard to package as a clean install-uninstall target, because it's mutable
13:14:01 × tiferrei quits (~tiferrei@user/tiferrei) (Remote host closed the connection)
13:14:25 tiferrei joins (~tiferrei@user/tiferrei)
13:14:36 <Inst[m]> why not just have a slaved msys2?
13:14:44 <maerwald> slaved?
13:14:47 <Inst[m]> i guess someone will come in and complain about all the disk space you're wasting
13:14:57 <Inst[m]> i mean that GHCup already installs its own msys2
13:15:22 <maerwald> it does so via a powershell script... the binary itself (handling GHC versions) has no knowledge of it
13:15:23 <Inst[m]> i think on this machine i technically have cygwin, but don't use it, etc
13:15:44 <Inst[m]> also thanks for making GHCup usable on windows
13:16:11 <geekosaur> re RTS options, it looks like it supports RTS options but was not built with -threaded so -N doesn't work
13:16:16 <Inst[m]> I'm not sure what I'd do without it, i.e, I was briefly considering learning OCaml (up to and only including a bootstrap), but decided to give up after I realized it wasn't trivial to get the compiler installed
13:16:22 fendor joins (~fendor@91.141.79.239.wireless.dyn.drei.com)
13:16:25 machinedgod joins (~machinedg@24.105.81.50)
13:16:26 <Inst[m]> i need it to use winIO
13:16:35 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
13:16:47 <Inst[m]> i'm also wondering if you can get a full GHCup installation via a VSC extension
13:16:51 <Inst[m]> that would actually be ridiculously convenient
13:17:09 × ellie quits (~ellie@user/ellie) (Ping timeout: 250 seconds)
13:17:11 <maerwald> I think VSCode already uses ghcup for some stuff afair
13:17:15 <maerwald> not sure
13:17:54 <messier102> What would the benefit of getting on MS store be as opposed to the current state of affairs?
13:18:13 <Inst[m]> i'm pretty dependent on VSC, it's just way too much fun having type lenses, having a haskelly hack that can call GHCi, etc
13:19:02 <Inst[m]> messier102; at least in my use case, getting some rube to run a powershell script requires lots of trust, and you have to trust haskell.org hasn't been compromised, which, for haskellers, isn't such a big problem
13:19:14 <maerwald> messier102: running a powershell script from the internet on your computer isn't as cool as getting it certified from the MS store?
13:19:24 <maerwald> not sure windows users care, though
13:19:24 <Inst[m]> everyone else? "this is a niche language that i've never heard of that wants me to run a powershell script"
13:19:49 <maerwald> maybe it's part of the expected experience to get viruses from installers and then have windows defender clean it up
13:20:15 <maerwald> like the whole experience
13:20:17 <maerwald> xD
13:20:42 <messier102> That's fair, but at the same time I don't think any other language does it all that differently
13:20:54 <maerwald> someone claimed python is in MS store
13:20:55 <messier102> It's always either an installer or a spooky looking shell script
13:21:44 <messier102> maerwald: It is, yes. Actually the default `python` command on a clean Windows install will link you to the store page, which can be a source of problems in and of itself
13:21:46 <Inst[m]> you install visual studio (community iirc) for C++
13:22:15 <maerwald> https://www.microsoft.com/en-us/p/python-39/9p7qfqmjrfp7#activetab=pivot:overviewtab
13:22:24 <maerwald> I think that's pretty cool
13:23:00 <messier102> Getting PL runtimes off of MS store feels weird conceptually, but who knows
13:23:32 <messier102> Or toolchains, I should say
13:24:01 <messier102> Then again, all the WSL Linux distros is on the store too
13:28:02 <messier102> Ah, I suppose it would make more sense to be able to do `winget haskell` or some such
13:29:41 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
13:30:48 pothepanda joins (~pot_@109.249.187.17)
13:31:07 pothepanda parts (~pot_@109.249.187.17) ()
13:31:14 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
13:33:07 <mon_aaraj> Hey, I have been trying to get ghcup with GHCUP_USE_XDG_DIRS, but it generates symlinks with broken paths into my ~/.local/bin, any idea how to fix it from doing that? I would like to evade putting .ghcup in my home directory
13:33:35 <maerwald> mon_aaraj: where do the links point to
13:34:01 <maerwald> and what are your XDG variables
13:34:09 <maerwald> I assume they point outside of home?
13:34:18 pothepanda joins (~pot_@109.249.187.17)
13:34:57 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
13:35:21 <mon_aaraj> for example, a binary in ~/.local/bin/runghc points to `../share/ghcup/ghc/8.10.7/bin/runghc`, i believe the only variable that matters here is XDG_DATA_HOME which is ~/.local/share for me
13:35:57 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
13:36:09 [exa] joins (~exa@user/exa/x-3587197)
13:36:17 <mon_aaraj> running `file ~/.local/bin/runghc` results in `/home/mon/.local/bin/runghc: broken symbolic link to ../share/ghcup/ghc/8.10.7/bin/runghc`, which is how i know it is a broken symlink
13:36:48 <maerwald> lemme try
13:38:23 <maerwald> mon_aaraj: GHCUP_INSTALL_BASE_PREFIX should definitely work though
13:38:53 <Inst[m]> wait, there's no way to get runghc to use winio without modifying global environment variables, is there?
13:39:01 × jespada quits (~jespada@87.74.36.188) (Ping timeout: 256 seconds)
13:40:11 jespada joins (~jespada@87.74.36.188)
13:40:37 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
13:42:17 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
13:44:06 <maerwald> mon_aaraj: works here
13:44:52 <maerwald> mon_aaraj: can you pastebin all your env?
13:45:33 <mon_aaraj> alright, let me see
13:46:00 gaff joins (~gaff@49.207.224.13)
13:46:00 lavaman joins (~lavaman@98.38.249.169)
13:46:33 <mon_aaraj> https://bpa.st/OJHQ
13:46:46 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
13:47:25 <geekosaur> Inst[m], --ghc-arg=+RTS --ghc-arg=--io-manager=native --ghc-arg=-RTS
13:47:42 <Inst[m]> thank you so much
13:47:45 <gaff> if you have something like `data X = X Int`, is it possible to enforce a constraint on what `Int` values are allowed? for example, suppose you want to allow only 1 & 2.
13:48:10 <geekosaur> gaff, no, ghc does not support subtyping
13:48:19 <geekosaur> you have to use a smart constructor
13:48:32 <gaff> yeah, i thought so.
13:48:45 <maerwald> mon_aaraj: what are the contents of ~/.local/share/ghcup?
13:48:48 <Inst[m]> so every ghc-arg has to be explicitly spelled out, instead of allowing a block
13:48:50 <geekosaur> liquid haskell supports this iirc
13:48:56 <geekosaur> Inst[m], yes
13:49:18 <maerwald> mon_aaraj: and what is your ghcup version?
13:49:32 <gaff> smart constructor is just a function that simply creates `X 1`, or `X 2`, in this example?
13:49:47 <geekosaur> yes
13:50:29 <gaff> and you don't expose the type declaration outside the module, but you just expose the smart constructor to outsiders?
13:50:35 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
13:50:38 <geekosaur> correct
13:50:46 <gaff> ah, i thought so
13:50:54 <geekosaur> well, you expose the type constructor but not the data constructor(s)
13:50:58 <gaff> funny name: "smart constructor"
13:51:12 <gaff> geekosaur: correct
13:52:28 <gaff> geekosaur: thanks much.
13:52:58 <mon_aaraj> here: https://bpa.st/IE3Q with ghcup version v0.1.17.4
13:53:09 <gaff> are there any plans to allow such a thing using language extensions in the future? i suppose not but hought i would ask.
13:54:05 <maerwald> mon_aaraj: your paste indicates that the link is not broken
13:54:08 <maerwald> I'm confused
13:54:31 Graham31415 joins (~Graham314@213.237.82.193)
13:54:32 <mon_aaraj> huh, i guess `file` got it wrong?
13:54:45 <maerwald> can you run ~/.local/bin/runghc?
13:55:02 <mon_aaraj> nope, `zsh: no such file or directory: /home/mon/.local/bin/runghc`
13:56:05 <mon_aaraj> or anything else inside ~/.local/bin made by ghcup, i have had this issue days ago, but i've tried everything to fix it, including nuking ghcup and reinstalling it, but it didn't work
13:56:39 <maerwald> mon_aaraj: wait, so the symlink points to itself?
13:56:41 <Inst[m]> hmmm
13:56:41 <Inst[m]> this is nice
13:56:48 <Inst[m]> haskell platform is technically installed, but i didn't let it do a damn thing to path variables
13:57:47 × gaff quits (~gaff@49.207.224.13) ()
13:59:12 <mon_aaraj> well, I don't think so, here's the output of `ls -Alh ~/.local/bin/`: https://bpa.st/3AWA
13:59:34 <mon_aaraj> oh, wait, i think i realise why
13:59:40 <maerwald> mon_aaraj: those links look all correct
14:00:07 <mon_aaraj> oh, then nevermind
14:00:24 <maerwald> can you run ~/.local/share/ghcup/ghc/8.10.7/bin/runghc?
14:00:59 <maerwald> I have a feeling you can't run the extracted binaries
14:01:28 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622)
14:01:56 <mon_aaraj> well when i try to run just that path it doen't do anything for a while, but when i add --version it says: `runghc 8.10.7`
14:02:09 × pothepanda quits (~pot_@109.249.187.17) (Ping timeout: 256 seconds)
14:02:49 <mon_aaraj> hold on, maybe symlinks could mess with it? i have ~/.local/bin also symlinked to ~/Git/dotfiles/.local/bin, so maybe for some reason it goes to the Git folder instead of going to local when it does `..`
14:02:57 <maerwald> oh gosh
14:03:07 <maerwald> yes
14:03:23 <mon_aaraj> huh, alright then
14:03:27 <maerwald> that could be considered a bug indeed... we don't run realpath on ~/.local/bin
14:03:37 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 240 seconds)
14:03:49 <mon_aaraj> ah, i see! Thank you so much for your help
14:04:38 <Inst[m]> okay, now to uninstall haskell platform
14:04:39 <mon_aaraj> meanwhile i will try your suggestion to use BASE_PREFIX
14:04:45 <Inst[m]> what does it actually come with?
14:05:03 <maerwald> https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/311
14:05:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622) (Ping timeout: 240 seconds)
14:05:44 <maerwald> mon_aaraj: you can also use bind-mounts instead of symlinks
14:05:55 <mon_aaraj> i forgot about that
14:06:08 <maerwald> although bind mounts can cause funny bugs with recursive file operations
14:06:20 <maerwald> but not in this case I think
14:06:33 <mon_aaraj> yeah, they kind of sound scary to do haha but i've never played much with them, so that is a great suggestion
14:06:44 <mon_aaraj> thank you so much for your help once again!
14:07:06 <maerwald> I've tested once whether file managers detect infinite recursion due to bind mounts, but most don't
14:09:16 <mon_aaraj> that's sad, but i wouldn't have thought any of em did, i am kind of curious about which ones you found detected them?
14:10:54 <maerwald> only my own xD
14:12:43 Guest21 joins (~Guest21@94.19.154.46)
14:12:49 <Inst[m]> hmmm, maybe i need to reinstall ghcup... again
14:13:06 <Inst[m]> or maybe just a reinstall would work
14:13:42 segfaultfizzbuzz joins (~rustisafu@2602:306:cd3c:9350:95fa:7805:c4e7:5d84)
14:14:35 <Inst[m]> guess it's my fault for installing haskell platform
14:14:39 <Inst[m]> winio seems to be broken now
14:15:08 Kosades joins (~Kosades@94.19.154.46)
14:15:16 × Guest21 quits (~Guest21@94.19.154.46) (Client Quit)
14:16:17 rustisafungus joins (~rustisafu@2602:306:cd3c:9350:95fa:7805:c4e7:5d84)
14:17:02 APic joins (apic@apic.name)
14:17:03 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
14:17:47 × messier102 quits (~messier10@user/messier102) (Ping timeout: 256 seconds)
14:17:57 × segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:95fa:7805:c4e7:5d84) (Ping timeout: 240 seconds)
14:18:04 vglfr joins (~vglfr@coupling.penchant.volia.net)
14:20:16 Everything joins (~Everythin@37.115.210.35)
14:23:56 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41)
14:24:59 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
14:27:45 × Graham31415 quits (~Graham314@213.237.82.193) (Quit: Client closed)
14:28:27 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
14:28:55 × Kosades quits (~Kosades@94.19.154.46) (Quit: Client closed)
14:29:44 Inst joins (~delicacie@2601:6c4:4080:3f80:5d10:aa97:98cb:a150)
14:31:37 <Inst> do you know who do I talk to to complain about WinIO?
14:31:37 × rustisafungus quits (~rustisafu@2602:306:cd3c:9350:95fa:7805:c4e7:5d84) (Ping timeout: 240 seconds)
14:31:40 <Inst> or at least, try to debug it?
14:32:34 <[exa]> Inst: it seems quite unmaintained
14:33:37 <[exa]> what functionality from there are you using? chances are there's a better way now
14:35:34 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
14:37:41 deadmarshal joins (~deadmarsh@95.38.114.62)
14:40:57 × unyu quits (~pyon@user/pyon) (Ping timeout: 240 seconds)
14:41:30 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:42:01 × max22- quits (~maxime@2a01cb08833598005486a79f6b483be0.ipv6.abo.wanadoo.fr) (Quit: Leaving)
14:46:35 × zer0bitz quits (~zer0bitz@2001:2003:f74d:b800:b4e8:6f53:6fdf:55e6) (Read error: Connection reset by peer)
14:46:51 zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:90d6:f3c8:741b:677a)
14:53:38 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
14:54:21 × Inst quits (~delicacie@2601:6c4:4080:3f80:5d10:aa97:98cb:a150) (Read error: Connection reset by peer)
14:54:57 × xff0x quits (~xff0x@2001:1a81:525e:1300:5087:4f80:f91e:3652) (Ping timeout: 240 seconds)
14:55:16 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:56:11 xff0x joins (~xff0x@2001:1a81:525e:1300:bf98:a5c2:4041:4009)
14:57:57 <CHUD> Is there a way to view each evaluation in Haskell for example yesterday I asked what f x = if even (x + 1) then x + 1 else f (x - 1) evaluated to at each step and opqdonut responded with f 3 ==> if even (3+1) then 3+1 else f (3-1) ==> if True then 3+1 else f (3-1) ==> 3+1 ==> 4
14:59:28 <CHUD> it could be a simpler like this example factorial 3 ==> 3 * factorial (3-1) ==> 3 * factorial 2 ==> 3 * 2 * factorial 1 ==> 3 * 2 * 1 ==> 6
14:59:50 k8yun joins (~k8yun@198-48-158-40.cpe.pppoe.ca)
15:00:17 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 256 seconds)
15:02:16 ardell joins (~ardell@user/ardell)
15:02:47 × ardell_ quits (~ardell@user/ardell) (Ping timeout: 256 seconds)
15:03:11 <geekosaur> you could try ghc-vis
15:03:17 <geekosaur> @hackage ghc-vis
15:03:17 <lambdabot> https://hackage.haskell.org/package/ghc-vis
15:04:57 <CHUD> cool, I will try it out when I get home, can't install anything on computer lab pcs
15:07:23 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
15:08:46 × ardell quits (~ardell@user/ardell) (Quit: Konversation terminated!)
15:10:17 × k8yun quits (~k8yun@198-48-158-40.cpe.pppoe.ca) (Read error: Connection reset by peer)
15:10:39 k8yun joins (~k8yun@198-48-158-40.cpe.pppoe.ca)
15:11:17 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
15:13:07 × _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Quit: WeeChat 3.4)
15:16:53 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
15:17:40 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
15:17:40 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
15:17:40 wroathe joins (~wroathe@user/wroathe)
15:18:35 x_kuru joins (~xkuru@user/xkuru)
15:18:53 × namkeleser quits (~namkelese@124.188.192.57) (Quit: Client closed)
15:18:59 vysn joins (~vysn@user/vysn)
15:20:17 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 240 seconds)
15:21:24 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:21:52 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
15:22:55 <Inst[m]> [exa]: winio is a new feature to make haskell compatible with windows console, in 9.0.1, or maybe 8.12 or something
15:23:28 <Inst[m]> somehow it bugged out and is now causing getLine to freak out
15:23:42 <geekosaur> --io-manager=native is ghc 9.0.1 and later
15:24:13 stef204 joins (~stef204@user/stef204)
15:24:14 <Inst[m]> i was warned! it's probably the installation and uninstallation of haskell platform that did this :(
15:24:21 <Inst[m]> or maybe something crashed and winio couldn't terminate smoothly
15:24:52 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
15:27:46 <xerox> CHUD: there's also simple-reflect that can show some interesting things
15:28:15 <CHUD> is that a extension?
15:28:25 <geekosaur> nope, just a library
15:28:27 <CHUD> package*
15:28:30 <CHUD> oh
15:28:33 <geekosaur> > foldr f z [a,b,c]
15:28:35 <lambdabot> f a (f b (f c z))
15:28:50 <geekosaur> lambdabot has simple-reflect loaded
15:29:00 <geekosaur> it takes over all the single-letter variables
15:30:05 <xerox> > reduction $ fix (\f x -> if even (x + 1) then x + 1 else f (x - 1)) $ 2
15:30:07 <lambdabot> [2 - 1 + 1,1 + 1,2]
15:30:28 <xerox> nicer with a mapM_ print $ in front in your ghci (:
15:30:53 <geekosaur> %% mapM_ print $ reduction $ fix (\f x -> if even (x + 1) then x + 1 else f (x - 1)) $ 2
15:30:53 <yahb> geekosaur: http://qp.mniip.com/y/41
15:30:56 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
15:31:26 <geekosaur> oh right, no simple-reflection in yahb :(
15:31:36 <geekosaur> % import Debug.SimpleReflect
15:31:37 <yahb> geekosaur:
15:31:42 <geekosaur> %% mapM_ print $ reduction $ fix (\f x -> if even (x + 1) then x + 1 else f (x - 1)) $ 2
15:31:42 <yahb> geekosaur: http://qp.mniip.com/y/42
15:32:14 <xerox> hehehe
15:38:41 <[exa]> Inst[m]: oh so, I googled the wrong thing
15:39:00 Inst joins (~delicacie@2601:6c4:4080:3f80:44dc:4b88:2c8a:316d)
15:39:07 <Inst> thanks for trying to help @hexa
15:39:19 messier102 joins (~messier10@user/messier102)
15:40:21 <[exa]> I was a bit curious about what they actually did there
15:40:55 <[exa]> looks a bit more than "console compatibility"
15:41:19 <Inst> getLine and getChar aren't working anymore
15:41:19 fef joins (~thedawn@user/thedawn)
15:41:25 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
15:41:57 <Inst> two hypotheses: either, one, I crashed winio and it hada improperly set console settings, or two, haskell platform screwed with settings that weren't fixed by uninstall
15:42:03 <geekosaur> https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/9.0.1-notes.html
15:42:26 <geekosaur> the new io manager is listed in the highlights, and links to a youtube presentation
15:43:07 <CHUD> is it possible to see this channels chat history?
15:43:09 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
15:43:22 <Inst[m]> i guess you're a Discord native?
15:43:26 <Inst[m]> get Matrix
15:43:40 <CHUD> I have Matrix
15:43:44 <[exa]> CHUD: it's in topic :]
15:43:49 <CHUD> ohhh
15:43:54 <Inst[m]> then just scroll up
15:44:11 <Inst[m]> as far as matrix bridge is capable of doing so
15:44:15 <[exa]> wow the winio effort is actually huge
15:44:15 <Inst[m]> with the logs, etc
15:44:19 <CHUD> I'm not on matrix rn I'm using gamja
15:44:33 <Inst[m]> getting windows codemonkeys into haskell is good for the ecosystem
15:44:48 <Inst[m]> better haskell chimps than codemonkeys
15:44:51 <CHUD> but I need to take a walk and if I leave my PC for too long it will logout and I don't want to lose chat history
15:44:55 <[exa]> not sure how windows is doing now but the last time I tried to get async IO working, I found like 3 uncodumented bugs in both possibilities and then gave up
15:44:56 <Inst[m]> can be used for linguistics / ethology experiments :)
15:45:17 <[exa]> CHUD: did you see the "logs" link in /topic right?
15:45:41 <geekosaur> it's the last entry in the topic
15:45:58 <CHUD> oh nice
15:46:01 <[exa]> (also, you might want to reflect on the transient nature of the mood of this conversation :] )
15:46:02 <geekosaur> I use it somewhat regularly, to the point that my browser autocompletes it if I type "irc" :)
15:46:15 ProfSimm joins (~ProfSimm@87.227.196.109)
15:46:16 soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net)
15:46:36 <CHUD> I just don't want to ask the same question again if I can avoid it
15:46:58 <[exa]> like, you can write down what you found
15:47:07 <[exa]> but the irc logger solves it too I guess
15:47:36 <CHUD> I did do that briefly yesterday, but I was only asking a single line question, it's been more back and forth today
15:49:44 <[exa]> you even have a nice profile there now https://ircbrowse.tomsmeding.com/nick/CHUD
15:50:19 <CHUD> Yeah I just saw that
15:50:25 <CHUD> is my IP public?
15:50:57 <[exa]> yeah, IRC makes hosts visible
15:50:58 <geekosaur> currently yes
15:51:07 <[exa]> you can setup a cloak (register with NickServ)
15:51:22 segfaultfizzbuzz joins (~rustisafu@2602:306:cd3c:9350:3911:f302:476a:5d4c)
15:51:23 <CHUD> Can I cloak without registering?
15:51:27 <geekosaur> no
15:51:32 <CHUD> alright
15:51:36 <geekosaur> the cloak is tied to the registration
15:52:10 <segfaultfizzbuzz> i'm a bit confused here: bluespec is haskell and is "good for specifying hardware" ... i am also aware of some other hardware specified in bluespec/a haskell dialect.
15:52:11 <geekosaur> if you're that worried about exposure you might instead want to look up how to connect via tor
15:52:35 <segfaultfizzbuzz> but you would think that hardware specification would be all about knowing what computations are performed up-front, and probably even having static memory allocation
15:52:52 <segfaultfizzbuzz> laziness and garbage collection don't seem to be friendly to this modality of thought... what am i not understanding?
15:52:57 <CHUD> geekosaur: no I'm not worried, I mean this is just a temporary nickname, someone else might take it in the future
15:52:57 × messier102 quits (~messier10@user/messier102) (Ping timeout: 240 seconds)
15:53:09 <[exa]> CHUD: now really unless you desperately need to avoid others posing here under your nick (unlikely) or you have something very breakable/problematic on that IP, I wouldn't care
15:53:28 <geekosaur> you could always register it and then protect it
15:53:43 <geekosaur> then nickserv will boot anyone who tries to use it without logging in
15:53:52 <CHUD> I'm just connecting via my university network
15:54:20 <[exa]> yeah, that's basically the only thing people will know from the IP
15:54:32 deadmarshal joins (~deadmarsh@95.38.114.62)
15:54:45 <[exa]> (it translates back to dhcpXXXX.kent.ac.uk)
15:55:03 <Inst[m]> where is hutton at again?
15:55:06 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
15:55:07 <geekosaur> segfaultfizzbuzz, it's not like using haskell means necessarily making use of laziness. haskell has other advantages
15:55:24 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
15:55:35 <Inst[m]> i mean you could just set {-# LANGUAGE Strict #-}
15:55:45 <Inst[m]> iirc, does that force strictness on everything, or does it implement strict by default?
15:56:20 <CHUD> [exa]: I thought the owners of this channel would just cloak everyone by default
15:56:29 <CHUD> it's alright
15:56:34 <Inst> it's IRC
15:56:47 <Inst> at least on libera/freenode, there's no native IP blocking
15:56:51 <Inst> you have to request a cloak
15:57:05 <geekosaur> and cloaks are controlled by the server operators, not per channel
15:57:17 <geekosaur> channels can offer custom cloaks, but not automatic cloaking
15:57:30 <CHUD> oh I see
15:57:33 <Inst> wait, is Strict language pragma forcing strict by default or lazy by default?
15:57:47 <Inst> erm, strict by default or everything is forced to strict?
15:57:55 <geekosaur> (we don't offer custom cloaks here. several other channels I'm in have cloaks for developers)
15:58:12 <[exa]> CHUD: cloaking by default also kinda slows down action against abuse (spambots etc)
15:58:12 <geekosaur> Inst, -XStrict makes everything strict by default
15:58:37 <Inst> does it have to be XStrict, or is Strict via pragmas enough?
15:58:46 <Inst> iirc a major corporate Haskell implementation is Strict
15:58:54 <geekosaur> there's also -XStrictData which acts as if you marked every ADT you define as strict
15:58:59 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 256 seconds)
15:59:15 <Inst> btw can you ~datatypes?
15:59:26 <Inst> and when you say ADT, do you mean Algebraic Datatypes or Abstract Datatypes?
15:59:35 <CHUD> fair
15:59:39 <geekosaur> the "-X" is just convenient shorthand, as long as it appears before the `module` pragmas work just as well
16:00:02 <geekosaur> I believe so, yes (~ on datatypes to override default !)
16:00:02 <Inst> I know you can !DataConstructor, but not sure if you can ~DataConstructor to force laziness
16:01:03 <geekosaur> "Informally the StrictData language extension switches data type declarations to be strict by default allowing fields to be lazy by adding a ~ in front of the field."
16:02:05 gaff joins (~gaff@49.207.224.13)
16:02:38 <Inst> but it implies in native Haskell ~ is not supported for datatypes
16:03:25 <Inst> also how much more Haskell do I have to do before I can say Haskell is my first language?
16:04:14 mmhat joins (~mmh@55d44844.access.ecotel.net)
16:04:23 <Inst> i have a friend who probably needs Python training, and I have a copy of K&R that's busy destroying my bookshelf
16:04:50 <geekosaur> standard Haskell only supports ~ in one place, and that is in patterns
16:05:01 <Inst> thanks
16:05:06 <Hecate> do we have abstract datatypes in Haskell?
16:05:14 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
16:05:37 × Topsi quits (~Tobias@dyndsl-095-033-026-182.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
16:05:41 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
16:05:42 <Inst[m]> you're trolling me, hecate?
16:05:43 <geekosaur> "ADT" above was algebraic data type. "abstract" depends on usage, not definition
16:05:43 Inst[m] uploaded an image: (17KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/pLTELmLGtlMcQCqFGqkUxeBB/image.png >
16:05:44 <Inst[m]> ;_;
16:07:00 <Hecate> this is terribly named
16:07:01 <segfaultfizzbuzz> geekosaur: okay, so then what advantages does haskell have in specifying hardware, if laziness is not relevant
16:07:03 <Hecate> > but whose representation is hidden
16:07:04 <lambdabot> error:
16:07:04 <lambdabot> • Variable not in scope: but :: t0 -> t1 -> t2 -> t3 -> t
16:07:04 <lambdabot> • Perhaps you meant one of these:
16:07:07 <Hecate> It whould be named "opaque"
16:07:09 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
16:07:40 tiferrei2000 joins (~tiferrei@user/tiferrei)
16:07:43 <Hecate> segfaultfizzbuzz: https://clash-lang.org/
16:07:49 <geekosaur> segfaultfizzbuzz, types and type inference
16:07:50 <Inst[m]> the term "hidden" seems to have been used enough that it's understandable, the way i'm interpreting it is to mean a datatype on which pattern matching fails and you're forced to use predefined functions
16:08:11 hololeap has never heard that called "abstract data type"
16:08:22 × tiferrei quits (~tiferrei@user/tiferrei) (Remote host closed the connection)
16:08:27 <Inst[m]> i was told on Discord
16:08:48 <hololeap> abstract data type sounds like a oxymoron
16:09:07 <Inst> in my textbooks, it seems ADT means abstract data type by default, not algebraic data type
16:09:38 <Inst> which is, for me, insane, because they do mention that GADT refers to generalized algebraic data type, but ADT means abstract data type
16:10:00 <geekosaur> that seems odd, yes
16:10:45 <Inst> https://wiki.haskell.org/Algebraic_data_type
16:10:56 <Inst> Algebraic Data Type is not to be confused with *Abstract* Data Type, which (ironically) is its opposite, in some sense. The initialism "ADT" usually means *Abstract* Data Type, but GADT usually means Generalized *Algebraic* Data Type.
16:11:01 Inst facepalms
16:11:28 <hololeap> what
16:11:55 wroathe joins (~wroathe@user/wroathe)
16:13:32 × razetime quits (~quassel@49.207.209.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:13:48 lbseale joins (~ep1ctetus@user/ep1ctetus)
16:15:37 <ski> "ADT" is sometimes used to mean Algebraic Data Type ..
16:15:49 brandonh joins (~brandonh@102.39.195.50)
16:15:52 <hololeap> that's what I always thought it meant
16:16:08 <Inst> AlDT vs AbDT
16:16:12 <Inst> damn you, Haskell community!
16:16:17 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
16:16:49 × tdammers quits (~tdammers@77.109.72.177.res.static.edpnet.net) (Quit: WeeChat 3.0)
16:18:18 <hololeap> I don't even find "abstract data types" interesting enough to abbreviate, let alone take precedence over algebraic data types
16:18:31 <hololeap> you didn't export the constructors... whoopty doo
16:22:27 <ski> abstract data types are often a means to do subtypes, or quotient types, or both
16:22:49 o-90 joins (~o-90@gateway/tor-sasl/o-90)
16:23:17 <ski> (can also be to e.g. hide differences between underlying platforms)
16:25:39 × xff0x quits (~xff0x@2001:1a81:525e:1300:bf98:a5c2:4041:4009) (Ping timeout: 250 seconds)
16:28:50 m4lvin parts (~m4lvin@w4eg.de) ()
16:31:47 × brandonh quits (~brandonh@102.39.195.50) (Quit: brandonh)
16:32:11 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
16:32:30 lavaman joins (~lavaman@98.38.249.169)
16:32:44 o-90 joins (~o-90@gateway/tor-sasl/o-90)
16:32:53 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
16:33:03 slowButPresent joins (~slowButPr@user/slowbutpresent)
16:35:51 zmt00 joins (~zmt00@user/zmt00)
16:36:36 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
16:37:43 xff0x joins (~xff0x@2001:1a81:525e:1300:bf98:a5c2:4041:4009)
16:45:15 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
16:45:49 × glguy quits (x@libera/staff/glguy) (Ping timeout: 622 seconds)
16:46:51 ec joins (~ec@gateway/tor-sasl/ec)
16:47:04 × Feuermagier_ quits (~Feuermagi@84.17.48.173) (Remote host closed the connection)
16:47:10 deadmarshal joins (~deadmarsh@95.38.114.62)
16:47:12 × alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
16:47:23 Feuermagier_ joins (~Feuermagi@84.17.48.173)
16:48:14 × Feuermagier_ quits (~Feuermagi@84.17.48.173) (Client Quit)
16:48:27 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
16:48:49 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
16:50:35 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:51:43 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
16:54:28 <monochrom> http://www.vex.net/~trebla/haskell/abs-type-param.html is why abstract data types are interesting.
16:55:19 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds)
16:56:18 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
17:00:19 RFV joins (~Thunderbi@135.red-88-5-244.dynamicip.rima-tde.net)
17:02:24 × RFV quits (~Thunderbi@135.red-88-5-244.dynamicip.rima-tde.net) (Client Quit)
17:03:01 × xff0x quits (~xff0x@2001:1a81:525e:1300:bf98:a5c2:4041:4009) (Ping timeout: 256 seconds)
17:03:18 <maerwald> labeloptics can cause really weird error messages when you pass too many parameters to a function
17:03:54 xff0x joins (~xff0x@2001:1a81:525e:1300:ccb2:578e:6a32:bac8)
17:04:06 <maerwald> telling you an instance is missing
17:04:11 × dajoer quits (~david@user/gvx) (Quit: leaving)
17:04:40 CHUD parts (~CHUD@dhcp6353.kent.ac.uk) ()
17:05:56 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
17:05:57 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
17:05:57 wroathe joins (~wroathe@user/wroathe)
17:13:13 <hololeap> thanks for the link monochrom
17:13:15 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
17:14:45 emad joins (~emad@156.214.198.176)
17:14:56 _xor joins (~xor@dsl-50-5-233-169.fuse.net)
17:17:59 <ski> monochrom : nice ! :)
17:21:57 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
17:22:25 wavemode joins (~wavemode@2601:241:0:fc90:5d33:217d:3934:b62c)
17:24:33 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
17:25:18 zebrag joins (~chris@user/zebrag)
17:27:20 × Jing quits (~hedgehog@240e:390:7c53:a7e1:30fc:7acd:1f91:844b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:35:23 max22- joins (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
17:37:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
17:37:04 maxime_ joins (~maxime@2a01cb0883359800c4d240234508d9fe.ipv6.abo.wanadoo.fr)
17:39:45 × max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 250 seconds)
17:40:34 <Sqaure> Some classes requires a type function (m :: * -> *). Say if i want to implement Foldable on MyType a b, but want it to operate on "a", is there some trick to that?
17:41:35 <monochrom> No. You have to change MyType or write a newtype wrapper.
17:41:50 <Sqaure> thanks
17:45:05 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 3.4)
17:46:21 × tiferrei2000 quits (~tiferrei@user/tiferrei) (Ping timeout: 276 seconds)
17:46:26 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
17:47:30 tiferrei joins (~tiferrei@user/tiferrei)
17:50:22 eugen[m] joins (~eugenrahr@2001:470:69fc:105::1:a153)
17:51:03 Topsi joins (~Tobias@dyndsl-095-033-026-182.ewe-ip-backbone.de)
17:51:25 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
17:53:07 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
17:55:07 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
17:58:49 Andrew joins (~andrew@user/AndrewYu)
17:59:07 × soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
17:59:08 <hololeap> Sqaure: you can also use this for convenience: https://hackage.haskell.org/package/bifunctors-5.5.11/docs/Data-Bifunctor-Flip.html
18:00:03 <Sqaure> hololeap, ah, great. Thanks
18:00:14 <hololeap> and use GeneralizedNewtypeDeriving or DerivingVia to get all the nifty instances
18:01:21 <hololeap> you will need to define bi(functor/foldable/traversable/etc) for your type though if you want to derive them
18:01:27 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
18:04:23 hexeme is now known as ldlework
18:06:40 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
18:11:39 × k8yun quits (~k8yun@198-48-158-40.cpe.pppoe.ca) (Remote host closed the connection)
18:12:05 k8yun joins (~k8yun@198-48-158-40.cpe.pppoe.ca)
18:12:57 × martin02 quits (~silas@141.84.69.76) (Ping timeout: 256 seconds)
18:14:39 × vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds)
18:35:37 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
18:37:51 <hololeap> when are we going to get DeriveBitraversable
18:38:07 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
18:38:24 little_mac joins (~little_ma@2601:410:4300:3ce0:a45b:6ac9:43c1:2d7f)
18:39:44 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
18:40:19 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622)
18:41:16 theproffesor joins (~theproffe@user/theproffesor)
18:43:11 <EvanR> zero one infinity rule
18:43:43 <hololeap> DeriveNTraversable? :o
18:46:01 × gaff quits (~gaff@49.207.224.13) (Remote host closed the connection)
18:46:05 cuz joins (~user@50.226.229.246)
18:46:10 × x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
18:49:24 xkuru joins (~xkuru@user/xkuru)
18:50:19 mc47 joins (~mc47@xmonad/TheMC47)
18:51:40 flinner joins (~flinner__@2001:16a2:79d5:9b00:4d69:65fd:2ae4:cd31)
18:51:40 × flinner quits (~flinner__@2001:16a2:79d5:9b00:4d69:65fd:2ae4:cd31) (Changing host)
18:51:40 flinner joins (~flinner__@user/flinner)
18:57:13 gaff joins (~gaff@49.207.224.13)
18:57:15 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
18:57:18 × gaff quits (~gaff@49.207.224.13) (Read error: Connection reset by peer)
18:57:33 gaff joins (~gaff@49.207.224.13)
18:57:38 x_kuru joins (~xkuru@user/xkuru)
18:58:31 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 256 seconds)
18:58:40 × MatthiasG2 quits (~matthias@i6DFA03D9.versanet.de) (Quit: Lost terminal)
18:59:36 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:00:31 × qwedfg_ quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
19:03:03 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
19:03:34 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
19:04:41 × maxime_ quits (~maxime@2a01cb0883359800c4d240234508d9fe.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
19:05:04 qwedfg joins (~qwedfg@user/qwedfg)
19:07:47 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
19:07:51 × qwedfg quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
19:08:15 × fef quits (~thedawn@user/thedawn) (Ping timeout: 276 seconds)
19:08:26 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:11:14 vicfred joins (~vicfred@user/vicfred)
19:11:48 econo joins (uid147250@user/econo)
19:11:55 qwedfg joins (~qwedfg@user/qwedfg)
19:12:02 × vysn quits (~vysn@user/vysn) (Quit: WeeChat 3.3)
19:15:51 soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net)
19:17:03 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
19:17:36 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
19:18:54 × deadmarshal quits (~deadmarsh@95.38.114.62) (Ping timeout: 260 seconds)
19:19:03 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:21:51 × flinner quits (~flinner__@user/flinner) (Ping timeout: 256 seconds)
19:22:17 × segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:3911:f302:476a:5d4c) (Ping timeout: 240 seconds)
19:23:20 × qwedfg quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
19:24:02 × coot quits (~coot@213.134.190.95) (Quit: coot)
19:25:33 brandonh joins (~brandonh@102.39.195.50)
19:30:56 × brandonh quits (~brandonh@102.39.195.50) (Quit: brandonh)
19:33:36 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
19:36:29 ec joins (~ec@gateway/tor-sasl/ec)
19:38:14 Erutuon joins (~Erutuon@user/erutuon)
19:42:15 qwedfg joins (~qwedfg@user/qwedfg)
19:42:18 × polyphem quits (~rod@2a02:810d:840:8754:5126:c335:5f23:8358) (Quit: WeeChat 3.4)
19:43:26 maxime_ joins (~maxime@2a01cb08833598005be65fcb4fda67db.ipv6.abo.wanadoo.fr)
19:45:05 Sgeo joins (~Sgeo@user/sgeo)
19:47:32 × Topsi quits (~Tobias@dyndsl-095-033-026-182.ewe-ip-backbone.de) (Read error: Connection reset by peer)
19:54:12 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
19:57:36 × cuz quits (~user@50.226.229.246) (Remote host closed the connection)
19:57:46 cuz joins (~user@50.226.229.246)
19:58:13 machinedgod joins (~machinedg@24.105.81.50)
20:02:46 × cuz quits (~user@50.226.229.246) (Ping timeout: 260 seconds)
20:05:23 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 256 seconds)
20:06:46 juhp joins (~juhp@128.106.188.82)
20:09:51 alp joins (~alp@user/alp)
20:09:55 tommd joins (~tommd@67-42-147-226.ptld.qwest.net)
20:13:13 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
20:15:03 mcglk joins (~mcglk@131.191.49.120)
20:23:05 × k8yun quits (~k8yun@198-48-158-40.cpe.pppoe.ca) (Quit: Leaving)
20:23:07 fendor_ joins (~fendor@91.141.79.239.wireless.dyn.drei.com)
20:23:51 × fendor_ quits (~fendor@91.141.79.239.wireless.dyn.drei.com) (Read error: Connection reset by peer)
20:24:11 fendor_ joins (~fendor@91.141.79.239.wireless.dyn.drei.com)
20:26:57 × fendor quits (~fendor@91.141.79.239.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
20:28:55 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
20:30:39 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
20:31:13 × rando25892 quits (~homefame@user/rando25892) (Ping timeout: 256 seconds)
20:31:20 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
20:31:27 fendor__ joins (~fendor@212095005025.public.telering.at)
20:32:02 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
20:32:22 rando25892 joins (~homefame@user/rando25892)
20:34:13 lavaman joins (~lavaman@98.38.249.169)
20:35:11 × fendor_ quits (~fendor@91.141.79.239.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
20:37:32 × gaff quits (~gaff@49.207.224.13) (Remote host closed the connection)
20:38:49 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
20:39:39 ski idly ponders optics as a query (and modification) language
20:41:26 <Rembane> ski: Like xpath?
20:41:45 <ski> maybe. or SQL
20:42:27 <ski> (someone mentioned "yes well, \"drilling\" for values insome some deeply nested structure will always require some code" in another channel)
20:46:40 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
20:47:39 × qwedfg quits (~qwedfg@user/qwedfg) (Ping timeout: 256 seconds)
20:48:05 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
20:48:20 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
20:50:43 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
20:52:40 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
20:58:00 × fendor__ quits (~fendor@212095005025.public.telering.at) (Read error: Connection reset by peer)
20:58:06 fendor_ joins (~fendor@91.141.79.239.wireless.dyn.drei.com)
20:59:06 × tired quits (~tired@user/tired) (Quit: /)
21:00:41 × tommd quits (~tommd@67-42-147-226.ptld.qwest.net) (Ping timeout: 256 seconds)
21:03:23 Pickchea joins (~private@user/pickchea)
21:06:01 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
21:06:14 tired joins (~tired@user/tired)
21:08:01 qwedfg joins (~qwedfg@user/qwedfg)
21:09:25 × Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds)
21:16:11 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
21:19:54 × tired quits (~tired@user/tired) (Quit: /)
21:20:31 × `2jt quits (~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Ping timeout: 256 seconds)
21:21:25 tired joins (~tired@user/tired)
21:23:57 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
21:26:22 coot joins (~coot@213.134.190.95)
21:31:12 × coot quits (~coot@213.134.190.95) (Client Quit)
21:33:08 <Inst> can Haskell be considered type-level programming + pure functional programming?
21:33:19 <Inst> I'm getting the feeling that the type-level programming is as important or more so than the pure functional programming
21:33:40 <Inst> functional programming is a system of support and restraint, i.e, TCO, first-class functions
21:33:49 <Inst> immutability by default
21:34:14 <EvanR> is type level programming different from functional programming?
21:34:26 <monochrom> I would pin those descriptions on individual programs not the whole language.
21:35:08 <Inst> i'm just trying to see whether it's a valid to say "you know you're a Haskeller when the first thing you do when you learn a new language is look up the type system"
21:35:19 <maerwald> EvanR: there's functional programming without types, so yes
21:35:30 <Inst> lisp, i assume?
21:35:46 <monochrom> Are you a "journalist"? Only someone who has magazine article due is desperate enough to ask those generic hearsay questions.
21:36:03 <EvanR> "you know you're a haskell when" sounds like a hilarious jeff foxworthy show
21:36:09 <EvanR> haskeller
21:36:42 polyphem joins (~rod@2a02:810d:840:8754:3d7:e2e3:b5c3:df83)
21:36:53 <Inst> but is it valid / good practice to learn new languages starting from the type system?
21:37:08 <monochrom> Depends on the language?
21:37:28 <monochrom> OK I'm outta here.
21:37:31 <Inst> sorry
21:37:35 Inst parts (~delicacie@2601:6c4:4080:3f80:44dc:4b88:2c8a:316d) (Leaving)
21:39:06 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
21:39:29 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
21:40:11 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:40:42 <EvanR> if you like type level programming go check out some dependently typed languages, at least. There's probably other kinds of languages with type level programming nicer than haskell out there too
21:40:53 <monochrom> They left :)
21:41:14 EvanR realizes they are talking to an empty patch of wall
21:41:20 <maerwald> yeah... any language that doesn't chaotically retro-fit dependent types will be a smoother experience
21:41:28 Inst joins (~delicacie@2601:6c4:4080:3f80:44dc:4b88:2c8a:316d)
21:41:43 <Inst> or someone who's still monitoring via matrix, but actually left for monochrom's sensitivity
21:41:48 <maerwald> lol
21:41:57 Inst parts (~delicacie@2601:6c4:4080:3f80:44dc:4b88:2c8a:316d) (Leaving)
21:42:01 <sm> when talking to Inst.. be ready for sudden moves in any direction :)
21:42:02 <geekosaur> oy
21:42:52 <monochrom> And after all these months I'm pretty sure their core interest is beating around the bush and mincing words, not actual investigations.
21:43:37 <maerwald> did they apply for scotland yard?
21:43:46 <Inst[m]> i, at least, will know if i'm completely full of shit by october
21:43:58 <EvanR> a good skill to have
21:46:46 tdammers joins (~tdammers@77.109.72.177.res.static.edpnet.net)
21:46:49 ProfSimm joins (~ProfSimm@87.227.196.109)
21:47:27 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622) (Remote host closed the connection)
21:48:41 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622)
21:50:32 cynomys joins (~cynomys@user/cynomys)
21:56:47 × soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
22:00:37 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 250 seconds)
22:01:00 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
22:01:49 lavaman joins (~lavaman@98.38.249.169)
22:01:56 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
22:03:23 cuz joins (~user@50.226.229.246)
22:04:02 cuz` joins (~user@50.226.229.246)
22:07:13 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
22:07:53 × cuz quits (~user@50.226.229.246) (Ping timeout: 256 seconds)
22:13:16 vglfr joins (~vglfr@coupling.penchant.volia.net)
22:13:57 × fendor_ quits (~fendor@91.141.79.239.wireless.dyn.drei.com) (Read error: Connection reset by peer)
22:16:05 etale joins (~user@2600:8802:2105:7100:721c:e7ff:feda:ed41)
22:28:07 machinedgod joins (~machinedg@24.105.81.50)
22:28:23 × cuz` quits (~user@50.226.229.246) (Remote host closed the connection)
22:28:30 cuz` joins (~user@50.226.229.246)
22:29:18 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
22:39:01 × enyc quits (~enyc@user/enyc) (Ping timeout: 240 seconds)
22:43:06 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622) (Remote host closed the connection)
22:44:41 segfaultfizzbuzz joins (~rustisafu@2602:306:cd3c:9350:3911:f302:476a:5d4c)
22:45:38 <hololeap> Inst[m]: one thing to keep in mind is that the the type system only exists before the program is compiled. it's purely logic that exists inside GHC, so you could think of it as another language, in a way
22:46:53 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
22:47:01 × maxime_ quits (~maxime@2a01cb08833598005be65fcb4fda67db.ipv6.abo.wanadoo.fr) (Quit: Leaving)
22:47:33 <hololeap> for instance, some knuckleheads have written a way to solve the n-queens problem purely in the type system. when it's taken that far, it seems to me like a seperate language
22:49:00 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
22:52:52 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:c18f:7483:538b:1622)
23:03:38 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
23:03:48 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
23:03:48 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
23:03:48 wroathe joins (~wroathe@user/wroathe)
23:04:03 <janus> hololeap: i can't pull in your PR since I am not a maintainer of happstack-server :P i am just interested
23:04:17 <janus> stepcut (jeremy shaw) is the maintainer
23:04:33 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
23:05:25 <Inst[m]> <hololeap> "for instance, some knuckleheads..." <- i'm guessing to learn type-level programming, prolog etc might be a better choice?
23:05:45 <Inst[m]> as opposed to idris, agda, scala?
23:07:08 × segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:3911:f302:476a:5d4c) (Quit: Leaving)
23:07:09 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
23:07:15 <geekosaur> prolog's not really type level programming. neither is scala. if you're becoming comfortable with haskell then idris may be of interest
23:07:25 <geekosaur> but there is no one way to approach type systems
23:07:33 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
23:08:06 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:08:09 <geekosaur> just as there's no one "type system"
23:09:06 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
23:09:18 <Inst[m]> i'm just looking for the high ground, it's the primary argument for my interest in haskell
23:09:24 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
23:09:33 <geekosaur> I don't understand "high ground"
23:09:51 × emad quits (~emad@156.214.198.176) (Quit: Leaving)
23:10:05 <Inst[m]> i.e, have the most sophisticated abstractions, so even if i don't end up using the language,everything else is now easy
23:10:15 emf joins (~emf@2620:10d:c090:400::5:ab3f)
23:10:23 <Inst[m]> apparently Abstract Data Types can be used to implement quotient types
23:10:32 <Inst[m]> which are dual to dependent types, apparently
23:12:19 × xff0x quits (~xff0x@2001:1a81:525e:1300:ccb2:578e:6a32:bac8) (Ping timeout: 250 seconds)
23:12:38 <hololeap> hm, homotopy type theory? :p
23:12:56 <Inst[m]> not something i'm familiar with, so monochrom's claim is correct
23:13:03 <Inst[m]> i'm just rushing to try to get a basic understanding of everything hard
23:13:06 xff0x joins (~xff0x@2001:1a81:525e:1300:8c6b:7d96:3a83:c2cd)
23:13:12 <hololeap> I'm not familiar with it either... not very many people are
23:14:07 <hololeap> from what I understand it's like a crazy mix of topology and type theory, and I don't know either of those :p
23:15:28 geekosaur knows a very little bit of both and assumes he'd be completely lost if he tried to poke at HoTT
23:15:49 <geekosaur> s/both/either/ perhaps
23:16:10 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
23:16:22 <sclv> geekosaur: you'd be surprised!
23:16:41 <hololeap> Inst[m]: if you're looking for more accessible theory, you might be interested in bartosz milewski's stuff
23:17:05 <Inst[m]> oh wait
23:17:05 <Inst[m]> https://homotopytypetheory.org/book/
23:17:13 <Inst[m]> is this the stuff that's purportedly unreadable even with a PhD?
23:17:29 <sclv> its accessible if you go slowly
23:17:43 <geekosaur> "a" Ph.D.? I'd imagine it depends on which
23:17:49 <sclv> it doesn't make programming haskell easier though. its just really neat math!
23:18:08 <geekosaur> so not so different from CT in that regard?
23:18:17 <sclv> arguably, yes :-)
23:18:34 <monochrom> OOP used to be a PhD thing, too.
23:19:15 <sclv> considering fancier abstractions are more "advanced" is not a good approach, in my experience
23:19:21 <sclv> they just let you do different things
23:19:26 <monochrom> 400 years ago, only PhDs were taught the quadratic formula.
23:19:34 <sclv> and they don't substitute for knowing the details of the specific things they abstract
23:19:56 <Hecate> < monochrom> OOP used to be a PhD thing, too. // And then Java brought it to the masses by deforming it beyond recognition
23:19:59 <Hecate> :D
23:20:15 <sclv> i.e. you can formulate group theory as a special case of category theory. but just because a group can be presented as a category doesn't mean that knowing a textbook full of category theory helps you understand the classification of finite simple groups
23:20:32 <sclv> it helps with some things for sure, but its no substitute!
23:21:02 <monochrom> The deformation also took a few PhDs and research papers to truly understand, too.
23:21:28 <monochrom> Not to mention the multiple engineering-inclined PhDs to make Java run faster.
23:21:36 <monochrom> or run with less memory
23:21:44 yauhsien joins (~yauhsien@61-231-25-133.dynamic-ip.hinet.net)
23:24:10 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
23:24:25 <monochrom> And recall that it took Wadler, not some software "engineer", to figure out Java Generics.
23:25:13 <ski> Hecate : yea, it's what usually happens
23:26:33 × yauhsien quits (~yauhsien@61-231-25-133.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
23:26:55 <ski> Inst[m] : some parts of Prolog (or logic programming in general) is helpful for understanding type systems, sure. also, it helps round out your understanding of different programming paradigms
23:27:12 <ski> (Prolog is dynamically typed, btw)
23:27:19 <monochrom> Just 50 years ago, replacing goto by loops and if-then-else was an "impractical academic pipe dream".
23:27:45 ski idly ponders the invention of the subroutine
23:27:47 <monochrom> (look for "Dijkstra structured programming")
23:27:52 zebrag joins (~chris@user/zebrag)
23:29:08 <maerwald> monochrom: I had an odd moment yesterday while coding bash and I wished it had goto
23:30:19 <monochrom> Which one do you prefer? An exception system. BASIC's "on error goto".
23:30:27 <sprout_> goto is useful
23:30:45 <sprout_> I think you want both
23:30:46 <monochrom> Between a rock and a hard place :)
23:31:12 <sprout_> I have it in my lexer (I think that's the only place) but also in my bytecode
23:31:13 <maerwald> programming is a conspiracy to make us forget goto
23:31:54 <sprout_> both do (naive) pattern matching so I guess goto naturally arises there
23:32:08 <sprout_> or rather, conditional jumps
23:33:27 <ski> The term "flexibility" is usually used to denote the existence of a range of choices available to a programmer or implementor -- the more choices, the greater the flexibility. Flexibility is sometimes referred to as "generality". Because it is frequently presented in the desirable terms, "delaying binding of virtual objects to their realizations,"
23:33:40 <ski> increased flexibility has generally been considered a fatted calf of great succulence, sought voraciously and in the hope that the increased complexity that invariably attends it can be kept under control. In recent years, the wisdom of this quest has been called into question, for flexibility without discipline appears contrary to the plans of the god of reliability.
23:33:50 <ski> (An automobile with independent steering mechanisms for both front wheels is more flexible but less disciplined than an ordinary one. It is mainly of metaphysical interest, offensive to the god of safe highways.)
23:33:54 <ski> -- "Sacrificing the calf of flexibility on the altar of reliability",Peter J. Denning,1976,<http://dl.acm.org/ft_gateway.cfm?id=807704&type=pdf>
23:34:56 <monochrom> OTOH independent steering for all 4 wheels is actually useful.
23:35:18 <ski> if they're all coordinated with each other in an intelligent way :)
23:35:37 <monochrom> One of those times when the middle ground is worse than both extremes.
23:35:51 <Inst[m]> iirc, yes, byd, parallel parking via computer
23:36:00 <Inst[m]> they were promising a car like that a while back
23:36:05 <ski> the (short, three pages) paper goes on to talk about reliability, correctness, flexibility, mentioning patterns in the past like assembly vs. high-level (like BCPL,C), batch vs. interactive, relational vs. network, &c.
23:36:06 <Inst[m]> can i ask a question about how haskell-built .exes work?
23:36:17 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
23:36:29 <Inst[m]> don't ask to ask
23:36:34 <monochrom> The Freedom Convoy demands independent steering of all 18 wheels! >:)
23:36:56 <geekosaur> at what level? the high level view is https://en.wikipedia.org/wiki/Graph_reduction
23:37:06 <Inst[m]> i'll just put it out there: haskell built exes are independent of path variables, right? especially if it's just a simple program made out of a few putStrLn and getChars, right?
23:37:37 deadmarshal joins (~deadmarsh@95.38.114.160)
23:37:39 <geekosaur> the low level view of that is https://www.microsoft.com/en-us/research/wp-content/uploads/1992/04/spineless-tagless-gmachine.pdf
23:38:33 <geekosaur> they're independent if they don't use data files and don't use ghc-api (which is more or less all of ghc linked into your program and requires its whole installation to be available)
23:39:01 <Inst[m]> define data-files
23:39:03 <geekosaur> even if it uses data files you have some control over it, although I haven't looked at recent versions of how that works
23:39:17 <Inst[m]> primitive ghc "filename" of crap simple program
23:39:41 <Inst[m]> only module used is system.io and only extension is strict
23:39:49 <geekosaur> then you don't care
23:40:22 <geekosaur> no pathnames and you can just copy the exe around (although I don't know offhand what dlls it might require)
23:40:29 <geekosaur> <-- not really a windows person
23:40:38 <Inst[m]> files generated were .hi, .hs, .o, .exe
23:40:48 <geekosaur> I know on unixlikes the default is to link statically so a program is pretty much self-contained
23:40:56 <hololeap> anyone have a clue what this `-i` is doing here in doctest? https://github.com/dhall-lang/dhall-haskell/blob/master/dhall/doctest/Main.hs#L51
23:41:00 <Inst[m]> i guess winio is effectively a black art
23:41:09 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 250 seconds)
23:41:13 <monochrom> By default GHC on Windows is even more static than GHC on Linux.
23:41:19 <geekosaur> the .hi and .o files are intermediates you probably don't need to hold on to
23:41:38 <Inst[m]> so, if the file was compiled while winio was still returning the expected behavior
23:41:46 <geekosaur> if you have multiple source files then you might want to keep them in your dev environment to save on recompiling everything when you only change one file
23:41:50 <Inst[m]> i should go badger the #powershell folks some more
23:42:11 × deadmarshal quits (~deadmarsh@95.38.114.160) (Ping timeout: 256 seconds)
23:43:45 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
23:43:48 <geekosaur> hololeap, it's a module include path. you'd have to ask the Dhall dev(s) for more detail than the comment
23:43:59 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
23:45:55 <geekosaur> Inst[m], I don't know what dependencies the ghc RTS has on Windows. Said dependencies might include registry entries or something in msys2 which might now be confused because installing HP installed a separate msys2 which might have been left around
23:46:15 <geekosaur> and I'd expect mixing things between different msys2 installations to cause problems
23:46:23 <Inst[m]> thanks for trying
23:46:24 <geekosaur> that said, I'm just guessing
23:46:30 <maerwald> someone once said we should have one msys2 per GHC xD
23:46:31 <Inst[m]> possible it's the different msys2 that might have created the issue
23:47:54 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:48:25 × kaph quits (~kaph@net-2-47-208-144.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
23:52:54 <hololeap> geekosaur: thanks. do you know if this is documented anywhere? I can't seem to find it.
23:54:08 <geekosaur> it appears to be using (passing on?) ghc options so https://downloads.haskell.org/ghc/latest/docs/html/users_guide/flags.html#finding-imports
23:55:33 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds)

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