Logs on 2024-09-04 (liberachat/#haskell)
| 00:00:46 | × | jespada quits (~jespada@r190-64-133-178.su-static.adinet.com.uy) (Ping timeout: 252 seconds) |
| 00:00:58 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:02:19 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:05:42 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 00:05:42 | × | xff0x quits (~xff0x@2405:6580:b080:900:3618:2400:ae18:e1a3) (Ping timeout: 246 seconds) |
| 00:08:05 | × | acidjnk_new quits (~acidjnk@p200300d6e72cfb5469ca77b0637d5192.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 00:10:49 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 00:10:53 | → | Square2 joins (~Square4@user/square) |
| 00:14:19 | × | Fooo quits (~Square@user/square) (Ping timeout: 252 seconds) |
| 00:16:43 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:21:41 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 00:27:09 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 00:28:40 | <haskellbridge> | <Bowuigi> Leary what about the "infinite-ness" of codata tho? You can't fold/traverse over infinite structures without taking infinite time on normal order (thus, breaking Church-Rosser and disproving totality) |
| 00:29:30 | <haskellbridge> | <Bowuigi> If the only valid operations are pretty much "zip" (over codata) and take (to data) variants it makes sense though |
| 00:31:27 | <Inst> | are the or patterns from GHC 9.12 actually useful? |
| 00:31:48 | <Inst> | i'm sort of disappointed you can't condense multiple pattern matches into the same term, though |
| 00:32:06 | <Inst> | like, say, Foo pat; Bar pat = pat * 3 |
| 00:32:30 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:35:14 | × | myxos quits (~myxos@syn-065-028-251-121.res.spectrum.com) (Ping timeout: 255 seconds) |
| 00:37:25 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 00:40:44 | → | myxos joins (~myxos@syn-065-028-251-121.res.spectrum.com) |
| 00:41:23 | <Leary> | Bowuigi: GFP_F := forall r. (forall x. (x -> F x) -> x -> r) -> r; ana_F := /\a. \coalg:a -> F a. \seed:a. /\r. \expair:forall x. (x -> F x) -> x -> r. expair a coalg seed; out_F := \ff:GFP_F. ff (F GFP_F) /\a. \coalg:a -> F a. \seed:a. map_F a GFP_F (ana_F a coalg) (coalg seed) |
| 00:42:28 | <Leary> | The infiniteness is in the semantics we ascribe, not in the program that actually runs. Of course that limits which operations we can support, but this is all the same whether in Haskell or System F. |
| 00:42:32 | → | gmg joins (~user@user/gehmehgeh) |
| 00:45:07 | <Leary> | (in Haskell the limits are just softer, bottoming out at runtime rather than failing to type check) |
| 00:48:03 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 00:48:18 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:48:47 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 00:50:59 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 00:53:48 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 00:57:25 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit) |
| 00:58:54 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
| 00:59:09 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 01:01:41 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 01:04:05 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:08:42 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 01:18:29 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 01:19:59 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:24:44 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 01:30:32 | → | weary-traveler joins (~user@user/user363627) |
| 01:35:39 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:40:33 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 01:41:36 | × | Batzy quits (~quassel@user/batzy) (Ping timeout: 252 seconds) |
| 01:49:05 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 01:51:24 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:56:31 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
| 02:05:33 | <haskellbridge> | <Bowuigi> I see, it works more like a generator |
| 02:06:14 | <haskellbridge> | <Bowuigi> Also this means that you can get total anamorphisms (and above), which means more recursion schemes for my total lang! Thanks! |
| 02:06:36 | <monochrom> | Python generators secretly dream to be codata. System F and Haskell have real codata. :) |
| 02:07:08 | <haskellbridge> | <Bowuigi> Yeah, the magic of PL theory |
| 02:07:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:08:13 | <haskellbridge> | <Bowuigi> And speaking about that, is it possible to efficiently run bulk combinators ala Kiselyov in "Lambda to SKI, semantically"? |
| 02:08:15 | <monochrom> | In the next episode, I will talk about how OO secretly dreams to be codata with linearity, and Haskell has real codata with linearity. >:) |
| 02:09:15 | × | nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 265 seconds) |
| 02:09:49 | → | nadja joins (~dequbed@banana-new.kilobyte22.de) |
| 02:10:46 | <haskellbridge> | <Bowuigi> https://crypto.stanford.edu/~blynn/lambda/kiselyov.html has an optimized compilation algorithm ("bulkOpt") and linear+logaritmic expansions. The structure of the combinators seems to hint at a way to run them as is, but I can't find it |
| 02:11:54 | <haskellbridge> | <Bowuigi> If this is possible, then making a tiny and reasonably fast functional compiler is as well, which is fantastic |
| 02:12:03 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 02:12:18 | <haskellbridge> | <Bowuigi> (As an alternative, the eta-optimized version is a good choice) |
| 02:15:19 | × | zlqrvx quits (~zlqrvx@user/zlqrvx) (Quit: %quit%) |
| 02:15:40 | → | zlqrvx joins (~zlqrvx@user/zlqrvx) |
| 02:22:58 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:23:48 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 02:27:47 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 02:31:57 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 276 seconds) |
| 02:38:45 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:43:33 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 02:43:34 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 02:54:32 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:55:27 | × | td_ quits (~td@i5387093B.versanet.de) (Ping timeout: 246 seconds) |
| 02:57:31 | → | td_ joins (~td@i5387092A.versanet.de) |
| 02:59:33 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 03:02:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 03:14:09 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:19:08 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 03:25:33 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds) |
| 03:28:39 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 03:29:56 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:31:51 | → | athan joins (~athan@syn-098-153-145-140.biz.spectrum.com) |
| 03:34:42 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 03:38:35 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:39:57 | → | aforemny joins (~aforemny@i59F516D7.versanet.de) |
| 03:40:57 | × | aforemny_ quits (~aforemny@i59F516FC.versanet.de) (Ping timeout: 246 seconds) |
| 03:45:34 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:50:17 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 04:01:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:06:09 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 04:14:00 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 04:17:09 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:21:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 04:22:41 | → | Fooo joins (~Square@user/square) |
| 04:25:34 | <haskellbridge> | <thirdofmay18081814goya> what guarantees termination in system f? |
| 04:25:57 | × | Square2 quits (~Square4@user/square) (Ping timeout: 248 seconds) |
| 04:27:45 | <Axman6> | ^C |
| 04:32:56 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:36:42 | <Leary> | thirdofmay18081814goya: Strong normalisation. |
| 04:37:39 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 04:48:43 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:50:49 | × | Fooo quits (~Square@user/square) (Ping timeout: 260 seconds) |
| 04:53:27 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 04:56:15 | × | Pixi` quits (~Pixi@user/pixi) (Quit: Leaving) |
| 04:56:35 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 04:57:23 | <haskellbridge> | <thirdofmay18081814goya> ty! |
| 04:59:01 | → | michalz joins (~michalz@185.246.207.201) |
| 05:11:10 | → | rosco joins (~rosco@175.136.158.234) |
| 05:15:11 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:15:39 | → | Pixi joins (~Pixi@user/pixi) |
| 05:17:07 | × | rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 05:20:08 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 05:22:18 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 05:24:00 | → | rosco joins (~rosco@175.136.158.234) |
| 05:30:57 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:36:07 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
| 05:38:41 | <haskellbridge> | <thirdofmay18081814goya> hm, what extension of system F provides infinite recursion? |
| 05:39:08 | <haskellbridge> | <thirdofmay18081814goya> just inductive types right? |
| 05:46:44 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:51:18 | <Leary> | thirdofmay18081814goya: The simplest way is to extend the expression langugae with a fixpoint operator `Y : forall a. (a -> a) -> a`. Infinite or negative-recursive types will also do it. Inductive types don't suffice---System F encodes these anyway. |
| 05:51:39 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 05:52:32 | <haskellbridge> | <thirdofmay18081814goya> Leary: hm I see, thank you! |
| 05:56:00 | × | Leary quits (~Leary@user/Leary/x-0910699) (Remote host closed the connection) |
| 05:56:12 | → | Leary joins (~Leary@user/Leary/x-0910699) |
| 05:56:24 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 06:00:24 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:00:57 | → | acidjnk joins (~acidjnk@p200300d6e72cfb17e4f43f2fc0c04a46.dip0.t-ipconnect.de) |
| 06:04:25 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:05:09 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 06:16:11 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:16:54 | → | euleritian joins (~euleritia@dynamic-176-006-131-176.176.6.pool.telefonica.de) |
| 06:20:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 06:21:38 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:25:06 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
| 06:31:59 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:37:05 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 06:51:07 | → | alioguzhan1 joins (~Thunderbi@78.173.89.238) |
| 06:51:39 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 06:52:18 | × | alioguzhan quits (~Thunderbi@78.173.89.238) (Ping timeout: 272 seconds) |
| 06:52:18 | alioguzhan1 | is now known as alioguzhan |
| 06:54:07 | → | crvs joins (~crvs@c-a03ae555.016-99-73746f5.bbcust.telenor.se) |
| 07:00:18 | × | JamesMowery quits (~JamesMowe@ip98-167-207-182.ph.ph.cox.net) (Quit: Goodbye) |
| 07:00:35 | → | JamesMowery joins (~JamesMowe@ip98-167-207-182.ph.ph.cox.net) |
| 07:00:57 | × | vglfr quits (~vglfr@c-73-163-164-68.hsd1.md.comcast.net) (Ping timeout: 252 seconds) |
| 07:01:24 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 07:01:42 | → | vglfr joins (~vglfr@2607:fb91:81e:c43f:ac39:6af1:b007:6687) |
| 07:03:36 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 07:06:27 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 07:08:17 | × | vglfr quits (~vglfr@2607:fb91:81e:c43f:ac39:6af1:b007:6687) (Ping timeout: 252 seconds) |
| 07:08:28 | → | vglfr joins (~vglfr@2607:fb91:864:caf7:ad3:f751:af48:34dc) |
| 07:09:04 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 260 seconds) |
| 07:12:54 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 07:13:21 | × | alioguzhan quits (~Thunderbi@78.173.89.238) (Ping timeout: 252 seconds) |
| 07:17:27 | → | alioguzhan joins (~Thunderbi@78.173.89.238) |
| 07:18:29 | → | acidjnk_new joins (~acidjnk@p200300d6e72cfb17e4f43f2fc0c04a46.dip0.t-ipconnect.de) |
| 07:18:42 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 07:19:18 | → | EvanR_ joins (~EvanR@user/evanr) |
| 07:19:49 | → | pavonia_ joins (~user@user/siracusa) |
| 07:20:31 | → | oo_miguel joins (~Thunderbi@78.10.207.45) |
| 07:20:38 | → | econo__ joins (uid147250@id-147250.tinside.irccloud.com) |
| 07:21:08 | → | DrachenMaus joins (~dragonmau@user/dragonmaus) |
| 07:21:14 | → | athan_ joins (~athan@syn-098-153-145-140.biz.spectrum.com) |
| 07:21:21 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 07:21:27 | → | tzh_ joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 07:21:39 | × | pointlessslippe1 quits (~pointless@62.106.85.17) (Ping timeout: 246 seconds) |
| 07:21:39 | × | euleritian quits (~euleritia@dynamic-176-006-131-176.176.6.pool.telefonica.de) (Ping timeout: 246 seconds) |
| 07:21:39 | × | kaskal quits (~kaskal@2001:4bb8:2c3:301f:344f:f795:68cb:7518) (Quit: ZNC - https://znc.in) |
| 07:21:39 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Read error: Connection reset by peer) |
| 07:21:39 | × | connrs quits (~connrs@user/connrs) (Remote host closed the connection) |
| 07:21:39 | × | pavonia quits (~user@user/siracusa) (Ping timeout: 246 seconds) |
| 07:21:39 | → | kaskal joins (~kaskal@2001:4bb8:2c3:301f:344f:f795:68cb:7518) |
| 07:21:39 | × | athan quits (~athan@syn-098-153-145-140.biz.spectrum.com) (Remote host closed the connection) |
| 07:21:39 | × | DragonMaus quits (~dragonmau@user/dragonmaus) (Quit: No Ping reply in 180 seconds.) |
| 07:21:39 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 246 seconds) |
| 07:21:39 | × | dostoyevsky2 quits (~sck@user/dostoyevsky2) (Ping timeout: 246 seconds) |
| 07:21:39 | → | dostoyevsky2 joins (~sck@static.251.39.47.78.clients.your-server.de) |
| 07:21:39 | × | acidjnk quits (~acidjnk@p200300d6e72cfb17e4f43f2fc0c04a46.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 07:21:39 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 246 seconds) |
| 07:21:39 | econo__ | is now known as econo_ |
| 07:21:40 | × | dostoyevsky2 quits (~sck@static.251.39.47.78.clients.your-server.de) (Changing host) |
| 07:21:40 | → | dostoyevsky2 joins (~sck@user/dostoyevsky2) |
| 07:21:48 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 246 seconds) |
| 07:21:48 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Ping timeout: 246 seconds) |
| 07:21:48 | × | EvanR quits (~EvanR@user/evanr) (Ping timeout: 246 seconds) |
| 07:21:53 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 07:22:06 | pavonia_ | is now known as pavonia |
| 07:22:08 | → | pointlessslippe- joins (~pointless@62.106.85.17) |
| 07:26:31 | × | hammond quits (proscan@gateway04.insomnia247.nl) (Ping timeout: 264 seconds) |
| 07:27:01 | → | hammond joins (proscan@gateway04.insomnia247.nl) |
| 07:27:27 | → | connrs joins (~connrs@user/connrs) |
| 07:34:56 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 07:35:22 | × | vglfr quits (~vglfr@2607:fb91:864:caf7:ad3:f751:af48:34dc) (Ping timeout: 272 seconds) |
| 07:35:35 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 07:43:30 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 246 seconds) |
| 07:43:46 | → | __monty__ joins (~toonn@user/toonn) |
| 07:47:29 | → | merijn joins (~merijn@77.242.116.146) |
| 07:56:44 | → | CrunchyFlakes joins (~CrunchyFl@ip-109-42-114-254.web.vodafone.de) |
| 07:57:05 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Ping timeout: 248 seconds) |
| 07:58:08 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:01:23 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:02:19 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:08:23 | × | rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 08:10:13 | <bwe> | Hi, I've got a list that I want to map over and put the results under each other in a `do`. Do I just need to bind them with the bind operator? |
| 08:10:33 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 08:10:44 | → | vglfr joins (~vglfr@c-73-163-164-68.hsd1.md.comcast.net) |
| 08:13:08 | <haskellbridge> | <sm> hi @bwe, perhaps you're looking for "sequence" in Control.Monad ? |
| 08:17:27 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
| 08:17:56 | → | euleritian joins (~euleritia@dynamic-176-006-131-176.176.6.pool.telefonica.de) |
| 08:18:37 | × | euleritian quits (~euleritia@dynamic-176-006-131-176.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:18:54 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 08:18:58 | × | ft quits (~ft@p4fc2a393.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:21:39 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 08:23:21 | → | merijn joins (~merijn@77.242.116.146) |
| 08:25:31 | → | sourcetarius joins (~sourcetar@user/sourcetarius) |
| 08:25:49 | <haskellbridge> | <sm> -in Control.Monad |
| 08:25:52 | <[exa]> | bwe: either of traverse (or for), sequence, and foldM should do it |
| 08:26:58 | <bwe> | It's a pity, hoogle is down :( |
| 08:27:11 | <bwe> | I correct, it was. |
| 08:27:29 | × | tzh_ quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 08:30:59 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:36:04 | → | misterfish joins (~misterfis@84.53.85.146) |
| 08:42:11 | <bwe> | [exa]: oh, actually foldl did it for me with (>>) |
| 08:46:52 | <[exa]> | bwe: ah cool, that's exactly `sequence_` |
| 08:49:21 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 08:49:41 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 08:52:44 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 08:58:22 | <bwe> | [exa]: I didn't get `sequence` to work, but wasn't aware of `sequence_`. Thanks for bringing it up! |
| 08:59:07 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 09:08:12 | × | Patternmaster quits (~georg@user/Patternmaster) (Ping timeout: 252 seconds) |
| 09:08:24 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 09:11:38 | × | ubert quits (~Thunderbi@178.165.175.79.wireless.dyn.drei.com) (Remote host closed the connection) |
| 09:22:49 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 09:25:03 | → | ubert joins (~Thunderbi@178.165.175.79.wireless.dyn.drei.com) |
| 09:29:44 | → | chele joins (~chele@user/chele) |
| 09:30:32 | <[exa]> | bwe: there are many variants of that thing |
| 09:31:18 | <[exa]> | map, mapM, traverse, traverse_, for, for_, sequence, sequenceA, both of sequences with _, ... |
| 09:31:23 | × | CrunchyFlakes quits (~CrunchyFl@ip-109-42-114-254.web.vodafone.de) (Read error: Connection reset by peer) |
| 09:34:33 | → | CrunchyFlakes joins (~CrunchyFl@ip1f126623.dynamic.kabel-deutschland.de) |
| 09:35:45 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds) |
| 09:41:57 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 09:44:31 | → | ZharMeny joins (~ZharMeny@user/ZharMeny) |
| 09:52:33 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 09:52:52 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 09:53:25 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 09:59:24 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds) |
| 10:03:28 | × | EvanR_ quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 10:03:30 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 246 seconds) |
| 10:03:47 | → | EvanR_ joins (~EvanR@user/evanr) |
| 10:03:51 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 10:04:17 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 10:05:35 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 10:06:18 | × | CrunchyFlakes quits (~CrunchyFl@ip1f126623.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
| 10:09:25 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:15:30 | → | CrunchyFlakes joins (~CrunchyFl@ip1f126623.dynamic.kabel-deutschland.de) |
| 10:15:58 | → | merijn joins (~merijn@77.242.116.146) |
| 10:19:11 | × | CrunchyFlakes quits (~CrunchyFl@ip1f126623.dynamic.kabel-deutschland.de) (Client Quit) |
| 10:22:00 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
| 10:22:14 | → | CrunchyFlakes joins (~CrunchyFl@ip1f126623.dynamic.kabel-deutschland.de) |
| 10:23:00 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 10:25:40 | × | ZharMeny quits (~ZharMeny@user/ZharMeny) (Remote host closed the connection) |
| 10:25:49 | → | merijn joins (~merijn@77.242.116.146) |
| 10:27:46 | × | youthlic quits (~Thunderbi@user/youthlic) (Ping timeout: 252 seconds) |
| 10:31:39 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 10:31:59 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 10:35:05 | → | jespada joins (~jespada@r190-64-133-178.su-static.adinet.com.uy) |
| 10:36:07 | → | Guest21 joins (~Guest21@217.64.164.1) |
| 10:36:22 | × | Guest21 quits (~Guest21@217.64.164.1) (Client Quit) |
| 10:36:48 | <yin> | -/g |
| 10:38:26 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 10:40:54 | → | gmg joins (~user@user/gehmehgeh) |
| 10:41:50 | → | rosco joins (~rosco@175.136.158.234) |
| 10:42:29 | → | ZharMeny joins (~ZharMeny@user/ZharMeny) |
| 10:43:24 | <yin> | why did i just get a list of bans from 2 years ago? |
| 10:43:43 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 10:52:05 | <tomsmeding> | yin: who sent you that list |
| 10:54:49 | × | jespada quits (~jespada@r190-64-133-178.su-static.adinet.com.uy) (Ping timeout: 260 seconds) |
| 10:57:10 | <yin> | helium.libera.chat, apparently |
| 10:57:46 | → | xff0x joins (~xff0x@2405:6580:b080:900:ccef:b4d3:d1ad:38b8) |
| 10:58:51 | <yin> | must have been an error |
| 10:58:52 | <tomsmeding> | interesting? |
| 11:01:15 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 11:02:37 | <yin> | so apparently as soon as my bouncer synced i received the last few entries of the ban list, unprompted |
| 11:02:59 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 11:03:18 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 11:03:46 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 11:04:19 | <yin> | /mode #haskell +b gives me the complete list and it checks out |
| 11:04:34 | <yin> | must be a bug in znc |
| 11:06:03 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 11:06:52 | → | merijn joins (~merijn@77.242.116.146) |
| 11:09:28 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 11:10:37 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Ping timeout: 244 seconds) |
| 11:20:20 | × | mesaoptimizer quits (~mesaoptim@user/PapuaHardyNet) (Quit: mesaoptimizer) |
| 11:20:28 | → | mesaoptimizer joins (~mesaoptim@user/PapuaHardyNet) |
| 11:21:13 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:22:36 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
| 11:25:05 | → | euleritian joins (~euleritia@dynamic-176-006-148-177.176.6.pool.telefonica.de) |
| 11:26:12 | × | euleritian quits (~euleritia@dynamic-176-006-148-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:27:10 | → | euleritian joins (~euleritia@dynamic-176-006-148-177.176.6.pool.telefonica.de) |
| 11:30:45 | × | Buliarous quits (~gypsydang@46.232.210.139) (Remote host closed the connection) |
| 11:32:01 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 11:32:36 | × | Me-me quits (~me-me@kc.randomserver.name) (Changing host) |
| 11:32:36 | → | Me-me joins (~me-me@user/me-me) |
| 11:33:16 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 11:38:55 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Quit: ash3en) |
| 11:39:14 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 11:40:23 | × | euleritian quits (~euleritia@dynamic-176-006-148-177.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 11:40:45 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 11:44:12 | <geekosaur> | yeh, znc requests all that stuff on entering a channel, and I've seen it get out of sync before (have also gotten a very large chunk of userlist in the past) |
| 11:45:33 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 11:50:11 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 11:58:45 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 12:01:23 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 12:06:31 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 12:12:46 | → | youthlic1 joins (~Thunderbi@user/youthlic) |
| 12:15:27 | × | youthlic quits (~Thunderbi@user/youthlic) (Ping timeout: 246 seconds) |
| 12:15:28 | youthlic1 | is now known as youthlic |
| 12:16:47 | → | kalj joins (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
| 12:17:36 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 12:20:15 | × | kalj quits (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Client Quit) |
| 12:22:16 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 12:34:08 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 12:39:11 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 12:40:05 | <bwe> | which file watcher do you recommend to run `cabal run my-exec`? the options listed on stackoverflow sadly don't feel right |
| 12:41:52 | × | Luj9 quits (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) (Quit: The Lounge - https://thelounge.chat) |
| 12:42:18 | <tomsmeding> | ghcid |
| 12:42:35 | → | Luj9 joins (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) |
| 12:43:00 | <tomsmeding> | i.e. `ghcid -r` probably |
| 12:43:22 | <tomsmeding> | possibly `ghcid -c 'cabal repl my-exec' -r` |
| 12:47:41 | <Leary> | bwe: It doesn't take much more than `inotifywait`. I have a little shell script putting a ghcid-like interface over it: https://gist.github.com/LSLeary/a7ddc196d119d52e2767f66873e24bdd |
| 12:49:12 | <bwe> | tomsmeding: it's weird, why does `ghcid --restart="src" -c "cabal run web-server" -r` not react on changed file in src folder? |
| 12:49:52 | → | vlad_ joins (~vlad@102.217.157.32) |
| 12:50:08 | <bwe> | seriously, why is haskell community not being able to just integrate a file watcher into cabal? |
| 12:50:12 | → | akegalj joins (~akegalj@89-164-111-213.dsl.iskon.hr) |
| 12:50:32 | <Leary> | That's really not cabal's job. |
| 12:50:55 | <vlad_> | i take it haskell has enter as the command terminator char |
| 12:51:16 | <bwe> | Leary: whose job is it? |
| 12:51:28 | <Leary> | inotifywait |
| 12:51:31 | <vlad_> | could i string two commands together on one line? |
| 12:51:40 | × | youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic) |
| 12:51:57 | <Leary> | vlad_: With a semi-colon. |
| 12:52:06 | <vlad_> | oh ok so it does use ; |
| 12:53:20 | <vlad_> | hmm |
| 12:53:23 | <geekosaur> | bwe, this is not at all unusual or tools like inotifywait wouldn't already exist |
| 12:54:13 | <vlad_> | ghci> 1 |
| 12:54:13 | <vlad_> | 1 |
| 12:54:13 | <vlad_> | ghci> 1;3; |
| 12:54:13 | <vlad_> | <interactive>:17:1: error: |
| 12:54:13 | <vlad_> | Parse error: module header, import declaration |
| 12:54:14 | <vlad_> | or top-level declaration expected. |
| 12:54:16 | <vlad_> | ghci> |
| 12:54:24 | <bwe> | wow, there is even: https://github.com/mercurytechnologies/ghciwatch |
| 12:54:26 | <geekosaur> | (and indeed there are a bunch of other tools similar to it; which means there's a lot of demand for them) |
| 12:54:35 | <vlad_> | guess i shouldn't paste |
| 12:54:39 | <akegalj> | When I run `toRational 12.34` I get `3473401212609495 % 281474976710656` , but when I create rational myself `1234 % 100` I get `617 % 50`. Why? I would espect `toRational 12.34 == 1234 % 100` to be True but its not. On another hand `fromRational (toRational 12.34) == fromRational (1234 % 100)` is True. Am I doing something stupid here? |
| 12:54:54 | <tomsmeding> | bwe: ghcid wants a ghci repl, it will work with 'cabal repl' but not with 'cabal run' |
| 12:55:04 | <bwe> | tomsmeding: :( |
| 12:55:22 | <tomsmeding> | akegalj: 0.34 is not precisely representable as a sum of (negative) powers of two |
| 12:55:38 | <tomsmeding> | the floating point number "12.34" is hence not exactly equal to 1234 / 100 |
| 12:55:45 | <tomsmeding> | toRational gives you reality |
| 12:56:04 | <tomsmeding> | bwe: but with a repl you get faster reloading too! |
| 12:56:07 | <geekosaur> | as for your semicolon issue with ghci, it's just being consistent with Haskell: semicolons separate declarations, definitions, or statements (the latter being restricted to "do" blocks and having a specific meaning) |
| 12:56:31 | <vlad_> | i guess i'd better read the whole book before bothering you guys |
| 12:56:34 | <vlad_> | thanks! |
| 12:56:36 | <geekosaur> | it's not meaningful between expressions |
| 12:56:57 | <bwe> | tomsmeding: still, I am waiting for the day of hot-reloading of haskell apps. |
| 12:57:30 | <akegalj> | tomsmeding: thanks. My reality is shattered |
| 12:57:47 | <geekosaur> | IEEE floating point does that to a lot of people |
| 12:58:21 | <tomsmeding> | > toRational (12.34 :: Float) - 1234 % 100 |
| 12:58:23 | <lambdabot> | 1 % 6553600 |
| 12:58:26 | <tomsmeding> | > toRational (12.34 :: Double) - 1234 % 100 |
| 12:58:27 | <lambdabot> | (-1) % 7036874417766400 |
| 12:58:38 | <tomsmeding> | akegalj: Double gets closer than Float (as expected) |
| 12:59:12 | <tomsmeding> | > toRational (4.0625 :: Float) - 625 % 10000 |
| 12:59:13 | <lambdabot> | 4 % 1 |
| 12:59:21 | <tomsmeding> | > toRational (4.0625 :: Float) - 40625 % 10000 |
| 12:59:22 | <lambdabot> | 0 % 1 |
| 12:59:33 | <tomsmeding> | > 1 / 16 |
| 12:59:34 | <lambdabot> | 6.25e-2 |
| 13:00:00 | <tomsmeding> | 0.0625 is an exact (sum of) (negative) powers of 2, and furthermore those powers aren't too large, so it's exactly representable |
| 13:02:11 | <tomsmeding> | akegalj: if you want base-10 floating point numbers, check out https://hackage.haskell.org/package/scientific |
| 13:03:04 | <sprout> | > 9007199254740993.0 + 1.0 |
| 13:03:05 | <lambdabot> | 9.007199254740992e15 |
| 13:03:10 | <Leary> | akegalj: The behaviour you expect does at least hold for literals and `Data.Fixed.Fixed 100`. |
| 13:03:37 | <Leary> | Only Float and Double are sinful. |
| 13:03:42 | <sprout> | at least ieee compliant |
| 13:03:48 | <tomsmeding> | > 9007199254740993.0 |
| 13:03:50 | <lambdabot> | 9.007199254740992e15 |
| 13:07:25 | → | Square2 joins (~Square4@user/square) |
| 13:07:28 | <akegalj> | thanks guys! Will have to think a bit now |
| 13:08:22 | <bwe> | which testing suite for parametrised tests is state of the art today? tasty, hedgehog, skeletest…? |
| 13:09:28 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 13:09:29 | <bwe> | tomsmeding: as of now I've settled with `watchexec -w src -r -e hs -- cabal run web-server` |
| 13:10:13 | × | Luj9 quits (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) (Quit: The Lounge - https://thelounge.chat) |
| 13:10:52 | → | Luj9 joins (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) |
| 13:11:31 | <tomsmeding> | tasty is a framework that you can plug other stuff in, so it doesn't belong in the same list as hedgehog/quickcheck |
| 13:11:55 | → | weary-traveler joins (~user@user/user363627) |
| 13:12:00 | <geekosaur> | skeletest is quite new (past month) so I'd hold out or use it for experiments |
| 13:12:15 | <geekosaur> | hedgehog is probably the go-to |
| 13:13:14 | <tomsmeding> | if you're looking for a test framework, tasty is the "nobody got fired for choosing tasty"; for property-based tests, hedgehog tends to be nicer in practice than QuickCheck for more involved usecases |
| 13:13:30 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Ping timeout: 276 seconds) |
| 13:13:39 | <tomsmeding> | both hedgehog and quickcheck can hook into tasty |
| 13:14:16 | <bwe> | tomsmeding: what would be the "so. got fired for choosing…" then :) ? |
| 13:14:44 | <tomsmeding> | I dunno :p |
| 13:14:46 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 13:14:55 | <tomsmeding> | you own hand-rolled framework, undoubtedly |
| 13:15:18 | <akegalj> | tomsmeding: Leary: thanks for scientific and Data.Fixed pointers! |
| 13:16:04 | <bwe> | akegalj: (there is also safe-money, if you deal with money) |
| 13:17:14 | <geekosaur> | I've also used CReal from the numbers package; it's very accurate but also very slow. (I'd used a `type` so I could experiment and switch out the actual type; started with Double which was fast but inaccurate, then CReal which was accurate but very slow, then Rational which I expected to be the worst of both worlds but for my use case it turned out to be almost as fast as Double and almost as accurate as CReal |
| 13:17:20 | <geekosaur> | ) |
| 13:17:24 | <akegalj> | bwe: thanks! |
| 13:19:23 | <tomsmeding> | geekosaur: in what sense is Rational not accurate? |
| 13:20:01 | <akegalj> | geekosaur: thanks! |
| 13:20:36 | <tomsmeding> | sure, you can't express sqrt 2 as a Rational, but then Ratio doesn't implement Floating |
| 13:20:58 | <geekosaur> | tomsmeding, actually I think I misphrased that. I was expecting accuracy but slowness due to huge denominators, but it was actually very fast |
| 13:21:17 | <tomsmeding> | right |
| 13:21:21 | <tomsmeding> | (I would expect the same) |
| 13:21:27 | <tomsmeding> | interesting |
| 13:22:23 | → | sp1ff joins (~user@c-73-11-70-111.hsd1.wa.comcast.net) |
| 13:24:36 | <mauke> | sqrt($1.50) |
| 13:24:50 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 13:25:35 | × | Luj9 quits (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) (Quit: The Lounge - https://thelounge.chat) |
| 13:25:46 | → | Alleria joins (~Alleria@user/alleria) |
| 13:26:16 | → | Luj9 joins (~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) |
| 13:29:02 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:31:06 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 13:41:47 | EvanR_ | is now known as EvanR |
| 13:42:30 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 13:42:59 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 13:48:01 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 13:49:02 | × | athan_ quits (~athan@syn-098-153-145-140.biz.spectrum.com) (Ping timeout: 255 seconds) |
| 13:50:40 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Quit: ash3en) |
| 13:51:31 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 13:52:25 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 13:52:27 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 13:53:38 | × | weary-traveler quits (~user@user/user363627) (Quit: Konversation terminated!) |
| 13:54:34 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 13:54:54 | → | alexherbo2 joins (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) |
| 13:54:55 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 13:59:19 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 13:59:19 | × | alexherbo2 quits (~alexherbo@2a02-8440-3214-9c5e-8d74-bed8-dfc4-641c.rev.sfr.net) (Remote host closed the connection) |
| 14:03:06 | → | ystael joins (~ystael@user/ystael) |
| 14:03:51 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 14:06:06 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 260 seconds) |
| 14:10:40 | → | weary-traveler joins (~user@user/user363627) |
| 14:18:40 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 14:21:15 | × | Alleria quits (~Alleria@user/alleria) (Ping timeout: 252 seconds) |
| 14:26:01 | × | rosco quits (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 14:33:15 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 14:33:15 | × | jinsun quits (~jinsun@user/jinsun) (Killed (erbium.libera.chat (Nickname regained by services))) |
| 14:33:15 | jinsun_ | is now known as jinsun |
| 14:36:30 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 246 seconds) |
| 14:39:17 | × | _________ quits (~nobody@user/noodly) (Quit: leaving) |
| 14:42:37 | × | ZharMeny quits (~ZharMeny@user/ZharMeny) (Remote host closed the connection) |
| 14:43:19 | → | ZharMeny joins (~ZharMeny@user/ZharMeny) |
| 14:45:33 | → | _________ joins (~nobody@user/noodly) |
| 14:46:08 | → | Alleria joins (~Alleria@user/alleria) |
| 14:50:29 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 248 seconds) |
| 14:55:20 | → | alexherbo2 joins (~alexherbo@2a02-8440-3216-51e1-289d-5592-bb15-27a5.rev.sfr.net) |
| 14:55:47 | × | alexherbo2 quits (~alexherbo@2a02-8440-3216-51e1-289d-5592-bb15-27a5.rev.sfr.net) (Remote host closed the connection) |
| 14:56:56 | → | alexherbo2 joins (~alexherbo@119.13.23.93.rev.sfr.net) |
| 14:57:31 | × | alexherbo2 quits (~alexherbo@119.13.23.93.rev.sfr.net) (Remote host closed the connection) |
| 14:57:40 | → | CiaoSen joins (~Jura@2a05:5800:24b:5c00:ca4b:d6ff:fec1:99da) |
| 14:58:12 | × | Alleria quits (~Alleria@user/alleria) (Ping timeout: 246 seconds) |
| 15:03:06 | → | sayola joins (~sayola@ip-109-43-114-38.web.vodafone.de) |
| 15:06:59 | × | CiaoSen quits (~Jura@2a05:5800:24b:5c00:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds) |
| 15:07:17 | → | ystael joins (~ystael@user/ystael) |
| 15:09:17 | <albet70> | I just feed LLM some context about fixed-point, and asked it how to use fixed-point to implement infinite type, and it generate something I haven't seen, LLM is so powerful now? here is its generated msg https://paste.tomsmeding.com/upmI7IN8 |
| 15:11:46 | → | athan_ joins (~athan@2600:382:3a1c:6a61:4450:dec8:4148:5c75) |
| 15:12:33 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:13:26 | → | spew joins (~spew@201.141.99.170) |
| 15:17:11 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:18:21 | × | sourcetarius quits (~sourcetar@user/sourcetarius) (Quit: nyaa~) |
| 15:20:35 | → | misterfish joins (~misterfis@84.53.85.146) |
| 15:21:06 | → | ski joins (~ski@ext-1-196.eduroam.chalmers.se) |
| 15:21:08 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 15:22:52 | × | Square2 quits (~Square4@user/square) (Remote host closed the connection) |
| 15:27:06 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:28:51 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
| 15:33:02 | → | alexherbo2 joins (~alexherbo@119.13.23.93.rev.sfr.net) |
| 15:33:37 | × | alexherbo2 quits (~alexherbo@119.13.23.93.rev.sfr.net) (Remote host closed the connection) |
| 15:33:40 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 15:35:09 | → | alexherbo2 joins (~alexherbo@2a02-8440-3216-51e1-7938-060c-1c69-e43c.rev.sfr.net) |
| 15:48:53 | × | akegalj quits (~akegalj@89-164-111-213.dsl.iskon.hr) (Quit: leaving) |
| 15:54:45 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 252 seconds) |
| 15:56:51 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 244 seconds) |
| 16:04:36 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
| 16:07:13 | <EvanR> | albet70, as long as someone at some point delivered it codexes on that topic |
| 16:07:19 | × | machinedgod quits (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 16:07:30 | <EvanR> | it can remix the content in ... creative ways |
| 16:07:52 | <EvanR> | it really works great in D&D where the stakes for being wrong are much less xD |
| 16:08:55 | → | ystael joins (~ystael@user/ystael) |
| 16:13:37 | <albet70> | haha |
| 16:14:49 | → | infinity0 joins (~infinity0@pwned.gg) |
| 16:15:19 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 4.4.1) |
| 16:16:32 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 16:17:10 | × | sawilagar quits (~sawilagar@user/sawilagar) (Remote host closed the connection) |
| 16:17:20 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 16:22:49 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 265 seconds) |
| 16:26:36 | → | czy joins (~user@global-5-173.n-2.net.cam.ac.uk) |
| 16:30:37 | mceresa | is now known as mceresaSlack |
| 16:39:49 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 16:43:34 | × | sayola quits (~sayola@ip-109-43-114-38.web.vodafone.de) (Read error: Connection reset by peer) |
| 16:43:35 | → | sayola1 joins (~sayola@ip-109-43-114-38.web.vodafone.de) |
| 16:46:03 | × | EvanR quits (~EvanR@user/evanr) (Ping timeout: 276 seconds) |
| 16:46:10 | × | vglfr quits (~vglfr@c-73-163-164-68.hsd1.md.comcast.net) (Ping timeout: 252 seconds) |
| 16:46:25 | → | vglfr joins (~vglfr@2607:fb91:876:943b:ac39:c391:b163:cf47) |
| 16:47:09 | mceresaSlack | is now known as mceresa |
| 16:47:14 | × | sayola1 quits (~sayola@ip-109-43-114-38.web.vodafone.de) (Client Quit) |
| 16:47:28 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 265 seconds) |
| 16:48:39 | × | crvs quits (~crvs@c-a03ae555.016-99-73746f5.bbcust.telenor.se) (Ping timeout: 252 seconds) |
| 16:52:39 | × | vglfr quits (~vglfr@2607:fb91:876:943b:ac39:c391:b163:cf47) (Ping timeout: 246 seconds) |
| 16:53:33 | → | vglfr joins (~vglfr@2607:fb90:ea4d:129c:ad3:f751:4fc7:4632) |
| 16:55:06 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Ping timeout: 246 seconds) |
| 17:04:54 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
| 17:07:33 | × | hovsater quits (sid499516@user/hovsater) (Ping timeout: 248 seconds) |
| 17:07:57 | × | jonrh quits (sid5185@ilkley.irccloud.com) (Read error: Connection reset by peer) |
| 17:08:09 | → | jonrh joins (sid5185@id-5185.ilkley.irccloud.com) |
| 17:09:37 | → | sourcetarius joins (~sourcetar@user/sourcetarius) |
| 17:11:08 | → | hovsater joins (sid499516@user/hovsater) |
| 17:15:28 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 17:16:37 | → | ystael joins (~ystael@user/ystael) |
| 17:27:20 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 17:28:32 | → | EvanR joins (~EvanR@user/evanr) |
| 17:30:06 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:31:51 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 17:42:45 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 17:47:15 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 17:51:17 | × | czy quits (~user@global-5-173.n-2.net.cam.ac.uk) (Ping timeout: 248 seconds) |
| 17:56:24 | <Inst> | btw, standard chartered is finally backing Haskell Foundation? cheer! |
| 17:58:17 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:02:53 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 18:03:10 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Quit: Leaving) |
| 18:04:39 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 18:07:31 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 18:08:23 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 18:13:20 | → | Inst_ joins (~Inst@user/Inst) |
| 18:14:04 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:15:03 | → | euphores joins (~SASL_euph@user/euphores) |
| 18:15:45 | × | Inst quits (~Inst@user/Inst) (Ping timeout: 276 seconds) |
| 18:16:39 | <tomsmeding> | albet70: "It's important to note that the actual implementation of fixed-point combinators like the Y combinator is quite complex and involves advanced type-level programming and category theory concepts." -- that's not at all true |
| 18:16:54 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 18:17:02 | <tomsmeding> | sure, the Y combiantor as commonly phrased does not quite type-check in haskell because of the self-application `x x` |
| 18:17:33 | <tomsmeding> | but the trick to get around that, if you want to stay close to the original Y combinator, has nothing to do with type-level trickery or category theory |
| 18:17:46 | → | crvs joins (~crvs@c-a03ae555.016-99-73746f5.bbcust.telenor.se) |
| 18:18:16 | <EvanR> | chat-gpt should include what GPA it got during its undergrad with relevant answers |
| 18:18:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 18:19:48 | × | athan_ quits (~athan@2600:382:3a1c:6a61:4450:dec8:4148:5c75) (Ping timeout: 246 seconds) |
| 18:19:57 | × | vglfr quits (~vglfr@2607:fb90:ea4d:129c:ad3:f751:4fc7:4632) (Ping timeout: 252 seconds) |
| 18:20:35 | <haskellbridge> | <Bowuigi> Note that LLMs are bad at most of the functional stuff because they involve actual thought. Consider them as "professional yappers" for now, at least until AlphaProof evolves and goes Cubical |
| 18:20:46 | <tomsmeding> | albet70: https://en.wikipedia.org/wiki/Fixed-point_combinator#Type_for_the_Y_combinator |
| 18:20:52 | × | sourcetarius quits (~sourcetar@user/sourcetarius) (Quit: sourcetarius) |
| 18:21:16 | <tomsmeding> | the second code block there is an implementation of the Y combinator in haskell that does typecheck |
| 18:21:39 | <tomsmeding> | not a lot of deep stuff happening |
| 18:25:09 | <Inst_> | EvanR: that would be a fun experiment |
| 18:25:35 | <Inst_> | i'm susprised no one tried grading chatgpt's work, because tbh, i wouldn't be surprised if chatgpt could eek out a 2 / C |
| 18:25:40 | Inst_ | is now known as Inst |
| 18:25:59 | <EvanR> | it got an F for Frankenstein |
| 18:26:27 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
| 18:27:02 | → | ash3en joins (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) |
| 18:27:54 | → | euleritian joins (~euleritia@dynamic-176-006-139-128.176.6.pool.telefonica.de) |
| 18:29:52 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:32:33 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:34:42 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 18:35:24 | × | ystael quits (~ystael@user/ystael) (Quit: Lost terminal) |
| 18:42:26 | × | euleritian quits (~euleritia@dynamic-176-006-139-128.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 18:42:43 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:44:16 | → | Fooo joins (~Square@user/square) |
| 18:45:38 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:45:44 | Fooo | is now known as Square |
| 18:49:47 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 18:50:23 | → | vglfr joins (~vglfr@2601:14d:4e01:1370:919a:c941:4142:9778) |
| 18:50:36 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 18:54:57 | → | athan_ joins (~athan@syn-098-153-145-140.biz.spectrum.com) |
| 18:56:05 | → | mikess joins (~mikess@user/mikess) |
| 18:59:51 | → | CiaoSen joins (~Jura@2a05:5800:24b:5c00:ca4b:d6ff:fec1:99da) |
| 18:59:53 | × | youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic) |
| 19:01:25 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:02:41 | <[exa]> | albet70: there might be a blogpost somewhere on the deep internets that says precisely the same with similar but sufficiently different words, identifiers and code structure |
| 19:05:57 | × | spew quits (~spew@201.141.99.170) (Quit: spew) |
| 19:06:40 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 19:17:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:20:26 | → | ystael joins (~ystael@user/ystael) |
| 19:22:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 19:28:44 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:28:58 | × | gentauro_ quits (~gentauro@cgn-cgn11-185-107-12-141.static.kviknet.net) (Ping timeout: 252 seconds) |
| 19:30:48 | × | siers quits (~ij@user/ij) (Ping timeout: 252 seconds) |
| 19:30:53 | → | gentauro joins (~gentauro@user/gentauro) |
| 19:31:07 | <Inst> | does chatgpt imply grade deflation? |
| 19:31:09 | → | siers joins (~ij@user/ij) |
| 19:31:33 | × | alexherbo2 quits (~alexherbo@2a02-8440-3216-51e1-7938-060c-1c69-e43c.rev.sfr.net) (Remote host closed the connection) |
| 19:31:35 | <Inst> | as in, would it result in harsher, and more aggressive grading as a way to shut down 0 effort chatgpt grabs? |
| 19:32:31 | <EvanR> | lol |
| 19:32:57 | <EvanR> | everyone has to get smarter to compete with chatgpt grading curve. Artificial Intelligence indeed |
| 19:33:44 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 19:34:21 | <monochrom> | Grade deflation is happening. My colleagues and I are seeing a decrease of 10-15 percentiles in marks in 3rd-year students; they are also more passive. But we think it's COVID rather than LLMs. |
| 19:36:56 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 19:37:02 | <monochrom> | LLMs are as good or as bad as what they were trained on. Essay courses and easy courses will get grade inflation because current LLMs are well-trained on those. Advanced courses will get deflation because LLMs are poorly trained on those, "insufficient data for a meaningful answer" (haha). |
| 19:38:35 | <monochrom> | I am skeptical about the "it requires thinking so LLMs will do poorly" theory. I don't buy it until LLMs are trained on high-quality high-quantity data and still perform poorly. |
| 19:39:09 | <monochrom> | Currently you don't even have enough Haskell code on the internet for chatgpt to steal and train on. |
| 19:39:49 | <Inst> | https://knowledge.wharton.upenn.edu/article/is-chatgpt-a-better-entrepreneur-than-most/ |
| 19:40:57 | <monochrom> | I say that because Copilot is doing OK with mainstream languages. Believe it or not, coding things up in mainstream languages requires just as much thinking, or "thinking". |
| 19:41:23 | × | crvs quits (~crvs@c-a03ae555.016-99-73746f5.bbcust.telenor.se) (Ping timeout: 255 seconds) |
| 19:43:33 | <monochrom> | (You think mutable states are really all that easier to get right than pure functions?) |
| 19:44:27 | <mauke> | no, but I've also seen chatgpt spit out hilariously (or subtly) broken code |
| 19:44:31 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:44:33 | × | CrunchyFlakes quits (~CrunchyFl@ip1f126623.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 19:44:37 | <mauke> | it's a frickin' chat bot |
| 19:45:05 | <monochrom> | (You think passing an object as an argument---recall that an object is at least a bundle of half a dozen functions---is really less complex than passing one single function as an argument?) |
| 19:46:01 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 19:46:22 | <Inst> | (FP is easier than imperative programming, it's just substantially different) |
| 19:46:24 | <mauke> | an object is no functions :-) |
| 19:46:30 | <Inst> | Hmmm, I wonder how the math community is doing with chatgpt proofs |
| 19:46:31 | → | CrunchyFlakes joins (~CrunchyFl@31.18.102.35) |
| 19:46:35 | <mauke> | I've been a C++ compiler before |
| 19:46:37 | <Inst> | there's a huge corpus there |
| 19:47:14 | <mauke> | "hoc est corpus meum" -- chatgpt, probably |
| 19:47:57 | <EvanR> | I heard there has been success generating proofs using this LLM stuff |
| 19:48:22 | <EvanR> | I don't know if it's in any remotely relevant realm to haskell |
| 19:48:25 | <monochrom> | Oh, that. In 1st- and 2nd-year courses, we recognize which homework submissions are from chatgpt. :) Namely, those that look way too well-organized like in textbooks, e.g., complete with introduction, bullet points, conclusion. |
| 19:48:50 | <justsomeguy> | Why does fmap length Just [1,2,3] evaluate to 1 instead of 3? |
| 19:49:05 | <Inst> | that doesn't evaluate |
| 19:49:06 | → | ft joins (~ft@p4fc2a393.dip0.t-ipconnect.de) |
| 19:49:13 | <Inst> | you mean fmap length (Just [1,2,3]), right? |
| 19:49:18 | <monochrom> | Because fmap length (Just whatever) = 1, regardless of whatever. |
| 19:49:31 | <monochrom> | Err sorry, misread. |
| 19:49:38 | <monochrom> | I need tea. I'll be back. |
| 19:49:47 | <Inst> | oh, that does |
| 19:49:55 | <monochrom> | > fmap length (Just [1,2,3]) |
| 19:49:55 | <dolio> | > (length . Just) [1,2,3] |
| 19:49:56 | <lambdabot> | Just 3 |
| 19:49:57 | <lambdabot> | 1 |
| 19:50:10 | <mauke> | > fmap length Just [1,2,3] |
| 19:50:12 | <lambdabot> | 1 |
| 19:50:22 | <monochrom> | Oh haha, didn't realize that it type-checks. |
| 19:50:25 | <dolio> | fmap length Just = length . Just |
| 19:50:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 19:50:57 | <monochrom> | OK then correction: length (Just whatever) = 1, regardless of whatever. length Nothing = 0. |
| 19:51:39 | <justsomeguy> | When I try (\x -> Just (length x)) [1,2,3] it returns Just 3. |
| 19:51:50 | <justsomeguy> | I think I made a mistake in the evaulation process somewhere. |
| 19:52:03 | <justsomeguy> | (I tried writing out each step.) |
| 19:52:09 | <dolio> | That is Just . length. |
| 19:52:09 | <EvanR> | > length (Just 3) |
| 19:52:11 | <lambdabot> | 1 |
| 19:52:14 | <ash3en> | > fmap length $ Just [1,2,3] |
| 19:52:15 | <lambdabot> | Just 3 |
| 19:52:16 | <Inst> | do you know what the Functor instance for (a ->) is? |
| 19:52:21 | <EvanR> | > length (1,3) |
| 19:52:23 | <lambdabot> | 1 |
| 19:52:24 | <ash3en> | fmap length Just [1,2,3] |
| 19:52:29 | <ash3en> | > fmap length Just [1,2,3] |
| 19:52:30 | <lambdabot> | 1 |
| 19:52:34 | <EvanR> | > length () |
| 19:52:35 | <dmj`> | the curse of FTP |
| 19:52:36 | <lambdabot> | error: |
| 19:52:36 | <lambdabot> | • Couldn't match expected type ‘t0 a0’ with actual type ‘()’ |
| 19:52:36 | <lambdabot> | • In the first argument of ‘length’, namely ‘()’ |
| 19:52:43 | <justsomeguy> | Inst: fmap |
| 19:52:51 | <Inst> | fmap = (.) |
| 19:52:55 | <EvanR> | really, () doesn't have a Foldable instance? |
| 19:52:55 | <Inst> | like dolio said |
| 19:53:01 | <mauke> | > (fmap length Just) "widdershins" |
| 19:53:02 | <lambdabot> | 1 |
| 19:53:02 | <Inst> | EvanR: do the kinds match? |
| 19:53:06 | <EvanR> | oh |
| 19:54:32 | <Inst> | more annoying, (a,b,c) is not instanced into Foldable |
| 19:54:40 | <ash3en> | eh, i too don't really get why > fmap length Just [1,2,3] = 1 and > fmap length $ Just [1,2,3] = Just 3? |
| 19:55:06 | <Inst> | fmap length Just [1,2,3] = (length . Just) [1,2,3] |
| 19:56:27 | × | ubert quits (~Thunderbi@178.165.175.79.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
| 19:56:31 | <Inst> | = length (Just [1,2,3]) = 1 |
| 19:58:24 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds) |
| 19:58:42 | <ash3en> | ok, slowly I get it |
| 20:00:07 | <Inst> | there's also an applicative and monad instance for (r ->), which people golf with, but a ton of people call smelly because you'd have to know how it works |
| 20:00:27 | <tomsmeding> | not only that, because often it's golfing for golfing's sake :p |
| 20:00:41 | <Inst> | > :t (<*>) |
| 20:00:42 | <mauke> | wouldn't want people to have fun |
| 20:00:42 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
| 20:00:50 | <tomsmeding> | which is good if you're at codegolf.stackexchange.com, but not so good if you're writing code that should be read |
| 20:00:59 | <mauke> | only ctional programming here |
| 20:01:04 | <Inst> | @:t (<*>) |
| 20:01:04 | <lambdabot> | Maybe you meant: wn v sm rc pl let id do bf @ ? . |
| 20:01:31 | <tomsmeding> | mauke: fun in programming does not always go together with writing maintainable code :p |
| 20:01:50 | <Inst> | > t |
| 20:01:51 | <lambdabot> | t |
| 20:01:51 | <tomsmeding> | doesn't mean that either is not worth doing |
| 20:01:57 | <Inst> | > t (<*>) |
| 20:01:59 | <lambdabot> | error: |
| 20:01:59 | <lambdabot> | • Couldn't match expected type ‘(f0 (a0 -> b0) -> f0 a0 -> f0 b0) |
| 20:01:59 | <lambdabot> | -> t’ |
| 20:02:07 | <tomsmeding> | :t (<*>) |
| 20:02:07 | <Inst> | ugh, which bot can give you types? |
| 20:02:08 | <lambdabot> | Applicative f => f (a -> b) -> f a -> f b |
| 20:02:14 | <mauke> | lambdabot |
| 20:02:19 | <tomsmeding> | % :t (<*>) |
| 20:02:19 | <yahb2> | (<*>) :: Applicative f => f (a -> b) -> f a -> f b |
| 20:02:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:02:35 | <Inst> | let f be (r ->) |
| 20:02:43 | <tomsmeding> | % :set -XTypeApplications |
| 20:02:43 | <yahb2> | <no output> |
| 20:02:49 | <tomsmeding> | % :t (<*>) @((->) r) |
| 20:02:49 | <yahb2> | <interactive>:1:14: error: Not in scope: type variable ‘r’ |
| 20:02:49 | <Inst> | try that as an exercise, ash3en |
| 20:02:52 | <tomsmeding> | % :t (<*>) @((->) Bool) |
| 20:02:52 | <yahb2> | (<*>) @((->) Bool) ; :: (Bool -> (a -> b)) -> (Bool -> a) -> Bool -> b |
| 20:03:47 | <mauke> | @djinn (Bool -> (a -> b)) -> (Bool -> a) -> Bool -> b |
| 20:03:47 | <lambdabot> | f a b c = |
| 20:03:47 | <lambdabot> | case c of |
| 20:03:47 | <lambdabot> | False -> a False (b False) |
| 20:03:47 | <lambdabot> | True -> a True (b False) |
| 20:04:12 | <tomsmeding> | @djinn (r -> (a -> b)) -> (r -> a) -> r -> b |
| 20:04:12 | <lambdabot> | f a b c = a c (b c) |
| 20:04:26 | tomsmeding | . o O ( f a d c ) |
| 20:06:45 | × | itaipu quits (~itaipu@168.121.98.169) (Ping timeout: 248 seconds) |
| 20:07:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 20:08:39 | → | machinedgod joins (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 20:10:09 | <ash3en> | oof, ok |
| 20:10:26 | <Inst> | it just works out that way because of the type definition |
| 20:10:55 | <Inst> | % :t (>>=) |
| 20:10:55 | <yahb2> | (>>=) :: Monad m => m a -> (a -> m b) -> m b |
| 20:11:13 | <Inst> | % :t (>>=) @(r ->) |
| 20:11:13 | <yahb2> | <interactive>:1:13: error: parse error on input ‘)’ |
| 20:11:19 | × | Square quits (~Square@user/square) (Ping timeout: 260 seconds) |
| 20:11:27 | <Inst> | % :t (>>=) @((->) r) |
| 20:11:27 | <yahb2> | <interactive>:1:14: error: Not in scope: type variable ‘r’ |
| 20:11:41 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:11:56 | <Inst> | (r -> a) -> (a -> r -> b) -> r -> b |
| 20:12:02 | <tomsmeding> | % :t (>>=) @((->) Bool) |
| 20:12:02 | <yahb2> | (>>=) @((->) Bool) :: (Bool -> a) -> (a -> Bool -> b) -> Bool -> b |
| 20:14:08 | <tomsmeding> | (<*>) = flip (>>=) . flip |
| 20:15:11 | <tomsmeding> | :t (=<<) <$> flip |
| 20:15:12 | <lambdabot> | (a1 -> a2 -> b) -> (a1 -> a2) -> a1 -> b |
| 20:16:38 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 20:16:47 | <tomsmeding> | 1. (<*>) = (=<<) <$> flip 2. (=<<) = (<*>) <$> flip |
| 20:17:31 | <tomsmeding> | (<$> flip) is involutive (at the right type) |
| 20:19:22 | <tomsmeding> | no actually, (<$> flip) is just involutive always |
| 20:19:36 | <tomsmeding> | (<$> flip) <$> (<$> flip) = id |
| 20:19:50 | → | itaipu joins (~itaipu@168.121.99.142) |
| 20:20:16 | <tomsmeding> | which is: flip fmap flip `fmap` flip fmap flip |
| 20:20:36 | <tomsmeding> | mauke: is this functional enough for you :p |
| 20:20:56 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 20:20:58 | × | ash3en quits (~Thunderbi@2a02:3100:7dd1:6200:ae40:c3a4:b9f6:6029) (Quit: ash3en) |
| 20:21:38 | <dmj`> | what even is functional |
| 20:23:03 | <tomsmeding> | well I think flip fmap flip `fmap` flip fmap flip is quite functional |
| 20:24:38 | <Hecate> | :26 |
| 20:24:41 | <Hecate> | (hi) |
| 20:24:46 | <tomsmeding> | :) |
| 20:25:17 | <Inst> | oh, condolences on your recent coup |
| 20:25:48 | <Inst> | and support, but off-topic |
| 20:25:53 | <Franciman> | hi, is haskell experimenting new language paradigms? |
| 20:26:06 | <Franciman> | are we gonna see major changes? |
| 20:27:23 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:28:12 | <Inst> | what are actually new language paradigms these days? |
| 20:30:54 | <EvanR> | fresh paradigms, right outta the book industry oven? |
| 20:31:13 | <EvanR> | smell those crispy acronyms |
| 20:31:31 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex) |
| 20:32:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 20:38:03 | <dmj`> | Franciman: there was some linear types added |
| 20:38:17 | <Franciman> | nice |
| 20:41:16 | <dmj`> | someone might be able to add row types into the type system, that'd be a big change |
| 20:43:10 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:45:28 | <justsomeguy> | What do you think of Serokell's work on dependent types? https://serokell.io/blog/ghc-dependent-types-in-haskell |
| 20:48:17 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 20:50:01 | → | czy joins (~user@2a00:23c6:54a8:6301:5024:a70a:b7d6:6a68) |
| 20:58:21 | <haskellbridge> | <thirdofmay18081814goya> in an extrinsically typed model of system f, do I need to introduce new syntax if I introduce the type-variable type and quantified-type type, can the syntax for lambda abstraction "\lambda x. term" be used for type application and type abstraction or do I need to introduce new syntax? |
| 20:58:30 | → | kaskal- joins (~kaskal@213-225-32-95.nat.highway.a1.net) |
| 20:58:42 | × | kaskal quits (~kaskal@2001:4bb8:2c3:301f:344f:f795:68cb:7518) (Ping timeout: 246 seconds) |
| 20:58:57 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:59:27 | × | dostoyevsky2 quits (~sck@user/dostoyevsky2) (Quit: leaving) |
| 20:59:46 | → | dostoyevsky2 joins (~sck@user/dostoyevsky2) |
| 21:01:53 | <EvanR> | chatgpt says yes, you need new syntax xD |
| 21:02:08 | <EvanR> | like capital lambda |
| 21:02:38 | <ncf> | stop using chatgpt |
| 21:02:46 | <haskellbridge> | <thirdofmay18081814goya> uh give me a second this question is ill-typed lmao |
| 21:03:12 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:03:56 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:05:06 | <monochrom> | :) |
| 21:06:52 | <monochrom> | I don't know extrinsically type model. But System F syntax goes like (Λt. λx:t. x) : ∀t. t->t |
| 21:07:59 | <monochrom> | Type theory tends to use Π instead of Λ. |
| 21:09:11 | <monochrom> | But then type theory's Π also covers more things. |
| 21:09:12 | <haskellbridge> | <thirdofmay18081814goya> What I want to ask: would I run into any issues if I have expressions "\lambda x. term" typed "TypeVariable -> Nat" but also expressions "\lambda x. term" typed "Nat -> Nat" |
| 21:11:52 | <haskellbridge> | <thirdofmay18081814goya> "forall TypeVariable. TypeVariable -> Nat" I meant |
| 21:12:53 | <monochrom> | I understand "forall t. t -> Nat", but I don't understnad "forall TypeVariable. TypeVariable -> Nat". |
| 21:13:04 | <EvanR> | you just said the same thing has two different types |
| 21:13:19 | <monochrom> | unless you say that by alpha conversion, they are the same damn thing. |
| 21:14:01 | <EvanR> | maybe you meant lambda x . type |
| 21:14:09 | <EvanR> | where type is a type not a variable |
| 21:14:26 | <haskellbridge> | <thirdofmay18081814goya> EvanR: i meant: the following would be two typed expressions in this system: "\lambda x. term1 : forall t. t -> Nat", and "\lambda x. term2. : Nat -> Nat" |
| 21:14:39 | <monochrom> | "lambda x. type" would happen in type theory, but not in System F. |
| 21:14:45 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:15:45 | <monochrom> | System F also doesn't like unannotated lambdas. |
| 21:16:38 | <EvanR> | thirdofmaycan'tautocompleteuhg: you still didn't give an example of a type abstraction or type application |
| 21:16:42 | <EvanR> | which I thought was the original question |
| 21:19:21 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 21:20:27 | → | srazkvt joins (~sarah@user/srazkvt) |
| 21:20:57 | <tomsmeding> | thirdofmay: do you mean that the following would be a valid type judgement? \t. \x. x : \forall t. t -> t |
| 21:21:14 | <tomsmeding> | i.e. merging the big-lambda and small-lambda syntaxes |
| 21:21:16 | <monochrom> | "(Λt. λx:t. term1) : ∀t. t->Nat" works, "(λx:Nat. term2) : Nat->Nat" also works, but note the manual annotation of x. "λx. term" System F be like "I won't do type inference for you". |
| 21:21:19 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:21:33 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:22:04 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 260 seconds) |
| 21:22:23 | <monochrom> | and by extension, "not let-generalization" either, so if you don't have Λ you won't get ∀. |
| 21:23:16 | <tomsmeding> | if you only have a type on the outside, stuff inside gets ambiguous too. Consider: `(\p -> fst p) (42, foo) : Nat`. What is the type of that `foo`? |
| 21:23:30 | <tomsmeding> | (if you don't like pairs, choose your favourite lambda encoding of pairs) |
| 21:24:22 | <haskellbridge> | <thirdofmay18081814goya> am instantiating examples from your comments, very helpful ty |
| 21:24:44 | <tomsmeding> | (and if you say "well foo is out of scope", read "\x -> x" for foo. That could be Nat -> Nat, Bool -> Bool, (Nat -> Bool) -> (Nat -> Bool), or anything else) |
| 21:26:18 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:27:29 | × | michalz quits (~michalz@185.246.207.201) (Remote host closed the connection) |
| 21:30:27 | <monochrom> | This gives me an interesting thought. System F is strongly normalizing. That sounds assuring at first. But it is only after your term passes type-checking. If you write an arbitrary unnannotated unchecked term, type inference is undecidable. So in a sense the proof of termination is put on your shoulder in the form of manual annotations. |
| 21:32:11 | <EvanR> | same as simply typed LC |
| 21:37:02 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:42:04 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:46:00 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 21:47:43 | <int-e> | EvanR: not quite; there, type inference is decidable |
| 21:48:03 | <int-e> | of course you pay for that by having fewer terms that can be typed successfully |
| 21:49:27 | <EvanR> | oh right |
| 21:52:20 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds) |
| 21:52:48 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:57:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 22:06:40 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 22:06:57 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
| 22:08:13 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:08:36 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:09:23 | <haskellbridge> | <thirdofmay18081814goya> is the following a correct statement? Consider the type "\forall t -> t". There exist values inhabiting this type whose type is "Bool -> Bool", "Nat -> Nat", "Int -> Int". |
| 22:10:55 | <haskellbridge> | <thirdofmay18081814goya> whoops didn't mean to put a backslash |
| 22:10:56 | <monochrom> | Do you mean "\forall t. t -> t"? |
| 22:11:14 | <haskellbridge> | <thirdofmay18081814goya> ah, right |
| 22:11:15 | <haskellbridge> | <thirdofmay18081814goya> yeah |
| 22:12:39 | <haskellbridge> | <thirdofmay18081814goya> so, reformulating |
| 22:13:08 | <monochrom> | On second thought, I don't actually know how to interpret the statement. |
| 22:13:36 | <haskellbridge> | <thirdofmay18081814goya> yeah am somewhat confused here |
| 22:13:49 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 22:13:50 | <haskellbridge> | <thirdofmay18081814goya> "Bool -> Bool", "Nat -> Nat", "Int -> Int" are some types inhabited by values inhabiting "forall t. t -> t"? |
| 22:15:33 | <monochrom> | System F is not an interesction type system (or a union type system, for that matter). So the type "Bool->Bool" and the type "forall t. t->t" are disjoint. |
| 22:15:34 | <EvanR> | did you explicitly explain the syntax of your language yet |
| 22:15:48 | <EvanR> | "a model of" system F is... I'm not sure |
| 22:16:13 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 22:16:14 | <monochrom> | (or a subtyping system) |
| 22:17:47 | <monochrom> | You need at least one of {subtyping, intersection} to talk about one term having two types and so the two types have some overlap. |
| 22:17:48 | <haskellbridge> | <thirdofmay18081814goya> monochrom: i.e. they do not have any common values? |
| 22:17:48 | <EvanR> | a specific term can get assigned specific typings. Your question kind of sounds like we're talking about platonic values out in space being in one or more sets |
| 22:18:09 | × | paddymahoney quits (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds) |
| 22:18:28 | <haskellbridge> | <thirdofmay18081814goya> EvanR: sorry I'm not really unconfused enough to be able to state a syntax lol |
| 22:18:47 | <EvanR> | you don't have system F spelled out in front of you? xD |
| 22:18:50 | <monochrom> | The Platonic Plane is untyped set theory in the first place. :) |
| 22:19:16 | <haskellbridge> | <thirdofmay18081814goya> EvanR: yeah tapl's, but am slowly working through its meaning |
| 22:19:55 | <haskellbridge> | <Bowuigi> thirdofmay18081814goya re:single-lambda Henk Barendegt's (might have mispelled that) lambda cube has a single lambda that works as both type application and abstraction, tho you might need type annotations or some way to disambiguate between them (upper/lower case variables could work) |
| 22:20:05 | <EvanR> | the "values" you ask about need to be sentences in the allowed language |
| 22:20:09 | → | pavonia joins (~user@user/siracusa) |
| 22:20:25 | <EvanR> | like lambda (x:Int) . x, or something |
| 22:20:26 | <haskellbridge> | <thirdofmay18081814goya> EvanR: hm this might be my problem, i might be confusing values and terms |
| 22:20:57 | <haskellbridge> | <thirdofmay18081814goya> Bowuigi: ah I see! |
| 22:21:30 | <haskellbridge> | <thirdofmay18081814goya> oh, i think I found the issue |
| 22:21:35 | <haskellbridge> | <thirdofmay18081814goya> terms unify, values inhabit |
| 22:21:36 | <EvanR> | dependent types are at the pinnacle of the lambda cube and have one lambda |
| 22:23:05 | <EvanR> | in one sense values are expressions which are fully evaluated. In another sense values are semantic, like \x -> x and \y -> y being "really the same value" |
| 22:23:24 | <monochrom> | terms inhabit types too. I haven't heard of "terms unify". |
| 22:24:12 | <EvanR> | stick to terms |
| 22:24:27 | <EvanR> | void where prohibited |
| 22:27:27 | × | sprout quits (~sprout@84-80-106-227.fixed.kpn.net) (Ping timeout: 244 seconds) |
| 22:27:52 | <ski> | dependently typed languages may've term reconstruction, as well |
| 22:28:06 | <monochrom> | You can treat ∀ as an epic intersection; then your questions have meaning. But System F does not require it, it allows me to, alternatively, treat ∀ as waiting for instantiation; then your questions are meaningless, two types are disjoint, there is no "my term inhabits two types", a term inhabits only one type. |
| 22:28:41 | <EvanR> | that's a theorem of system F, terms have at most 1 typing? |
| 22:29:06 | <haskellbridge> | <thirdofmay18081814goya> monochrom: I'll focus on this, thank you |
| 22:29:20 | <haskellbridge> | <thirdofmay18081814goya> a term inhabits only a single type (in system F) |
| 22:29:49 | <ski> | (Henk Barendregt) |
| 22:29:55 | <monochrom> | E.g., "clearly", (Λt. λx:t. x) does not inhabit Nat->Nat, and (λx:Nat. x) does not inhabit ∀t. t->t. |
| 22:30:22 | <monochrom> | (λx. |
| 22:31:16 | <monochrom> | (λx. x) is illegal in System F. In an intersection type system, it could inhabit both Nat->Nat and ∀t. t->t, but then that's not System F. |
| 22:31:37 | ski | idly ponders monic unions |
| 22:31:38 | <dolio> | No, it isn't illegal in System F. It's illegal in a particular presentation of System F. |
| 22:32:37 | <EvanR> | back to asking for the specific language and typing rules |
| 22:32:59 | <monochrom> | Would that require a heavy dose of type inference? |
| 22:36:07 | <dolio> | Well, you can't do type inference in general. But you can require people to give you full derivations for terms. |
| 22:36:20 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 22:36:35 | <haskellbridge> | <thirdofmay18081814goya> so dumb question but what is the type of the identity function, with explicit forall and parentheses? |
| 22:37:00 | <EvanR> | "the identity function", the platonic entity out in mathemagic land xD |
| 22:37:18 | <monochrom> | ∀t. t->t |
| 22:38:02 | <monochrom> | Parametricity says that it has only one inhabitant, so "the" is OK for this. :) |
| 22:38:03 | <EvanR> | what term has that type and has that behavior, with explicit forall and parentheses |
| 22:38:16 | <monochrom> | (Λt. λx:t. x) |
| 22:38:28 | <EvanR> | \o/ |
| 22:38:39 | <monochrom> | I have been using that for running examples for 3 times already. |
| 22:39:09 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 246 seconds) |
| 22:39:12 | <haskellbridge> | <thirdofmay18081814goya> am profoundly meditating on it thank you sorry for repeat |
| 22:39:26 | → | paddymahoney joins (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
| 22:40:10 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:40:11 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 22:41:01 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 22:41:22 | × | acidjnk_new quits (~acidjnk@p200300d6e72cfb17e4f43f2fc0c04a46.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 22:41:31 | ski | . o O ( `snd : (t : Type) * t -> t' ) |
| 22:42:23 | <haskellbridge> | <Bowuigi> That looks odd |
| 22:42:44 | <dolio> | It doesn't, actually. |
| 22:42:52 | <haskellbridge> | <Bowuigi> Isn't it "snd : (t t' : Type) -> t * t' -> t'"? |
| 22:43:17 | <EvanR> | lol |
| 22:43:21 | <monochrom> | (t : Type) * t -> t |
| 22:43:29 | <monochrom> | The ' is just to close the ` |
| 22:43:30 | <EvanR> | unknown type variable t' |
| 22:43:58 | <monochrom> | This is why I just use " |
| 22:44:12 | <monochrom> | We need html over irc. |
| 22:44:31 | <EvanR> | Isn't it t' |
| 22:44:38 | ski | sprinkles some anaphora, chases donkeys |
| 22:45:08 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 22:45:23 | <monochrom> | So that I can write <code>t -> t</code> >:) |
| 22:47:03 | <ski> | some people use Qt -> tQ |
| 22:47:21 | <EvanR> | o_O |
| 22:48:43 | × | srazkvt quits (~sarah@user/srazkvt) (Quit: Konversation terminated!) |
| 22:49:19 | <haskellbridge> | <thirdofmay18081814goya> the only thing "Λt. λx:t. x" can take, in System F, is a type, right? including a function type? |
| 22:49:39 | <ski> | "can take" ? |
| 22:50:17 | <monochrom> | Yeah the first lambda is to be instantiated to a type. "type-level lambda" |
| 22:50:53 | <monochrom> | actually just "type lambda". GHC may get it soon. |
| 22:50:54 | <haskellbridge> | <thirdofmay18081814goya> ski: i.e. the only step that is defined to reduce this expression is the one of substituting t for any type |
| 22:51:15 | <ski> | when applying it to a type, yes |
| 22:51:29 | <haskellbridge> | <thirdofmay18081814goya> ski: can you apply it to anything else? |
| 22:51:35 | <ski> | no |
| 22:51:44 | <haskellbridge> | <thirdofmay18081814goya> ok i see, ty |
| 22:51:51 | <ski> | (but you didn't mention anything about application) |
| 22:52:03 | <ski> | (just substitution) |
| 22:53:29 | → | sprout joins (~sprout@84-80-106-227.fixed.kpn.net) |
| 22:55:06 | <ski> | it's |
| 22:55:50 | <EvanR> | (Λt. λx:t. x) Nat could reduce |
| 22:55:53 | <ski> | (Λt. λx:t. x) u ⟿ λx:u. x |
| 22:55:54 | <ski> | not |
| 22:55:58 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:56:00 | <ski> | Λt. λx:t. x ⟿ λx:u. x |
| 22:56:22 | ddb1 | is now known as ddb |
| 22:57:03 | <ski> | (sometimes with a syntactic difference for applying a term to a type) |
| 22:57:11 | <EvanR> | because t is a bound variable, substituting seems problematic |
| 22:57:31 | <ski> | in the body |
| 22:58:17 | <EvanR> | substituting stuff for free variables always works |
| 22:58:33 | <EvanR> | where stuff doesn't capture bound variables |
| 22:58:54 | <EvanR> | or you void your warranty |
| 23:01:31 | <ski> | you can substitute for code variables, when meta-programming, not avoiding variable capture |
| 23:03:24 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 23:06:07 | × | ZharMeny quits (~ZharMeny@user/ZharMeny) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4)) |
| 23:06:22 | <haskellbridge> | <thirdofmay18081814goya> hm "λx:t. x : t -> t" is somewhat ambiguous outside of context right? we could mean either "Λt. λx:t. x : ∀t. t -> t" or "[y ↦ t] λx:y. x : y -> y", right? |
| 23:07:40 | <EvanR> | hence the syntax rules of your language needing to exist |
| 23:08:16 | <haskellbridge> | <thirdofmay18081814goya> nice, i think i've got it, thanks a lot |
| 23:09:33 | × | CiaoSen quits (~Jura@2a05:5800:24b:5c00:ca4b:d6ff:fec1:99da) (Ping timeout: 276 seconds) |
| 23:12:42 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 23:13:58 | → | gmg joins (~user@user/gehmehgeh) |
| 23:14:43 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:15:59 | → | spew joins (~spew@201.141.99.170) |
| 23:19:43 | → | Batzy joins (~quassel@user/batzy) |
| 23:19:49 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 23:20:09 | × | CAT_S quits (apic@brezn3.muc.ccc.de) (Ping timeout: 244 seconds) |
| 23:30:29 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:31:19 | × | spew quits (~spew@201.141.99.170) (Quit: spew) |
| 23:32:16 | × | xff0x quits (~xff0x@2405:6580:b080:900:ccef:b4d3:d1ad:38b8) (Quit: xff0x) |
| 23:35:22 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:36:38 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 245 seconds) |
| 23:46:16 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:46:34 | <haskellbridge> | <GunpowderGuy> Hello i am computer science interested in functional programming. I think by the end of the year i will be skilled enough to work on a high performance compiler |
| 23:46:50 | <haskellbridge> | <GunpowderGuy> like grin : https://www.reddit.com/r/haskell/comments/ku1zsm/nextgen_haskell_compilation_techniques/ |
| 23:47:07 | <haskellbridge> | <GunpowderGuy> Anyone else is interested in working with me? |
| 23:47:21 | <haskellbridge> | <GunpowderGuy> -is |
| 23:47:40 | <haskellbridge> | <GunpowderGuy> Hello i am computer science student researching functional programming. I think by the end of the year i will be skilled enough to work on a high performance compiler |
| 23:48:34 | <monochrom> | I can consider "λx:t. x : t -> t" to mean that "t" is specified from the surrounding context but I don't need to know. |
| 23:49:35 | → | Sciencentistguy joins (~sciencent@hacksoc/ordinary-member) |
| 23:49:38 | <monochrom> | Am I allowed to mock? I have a PhD in computer science, I think by the end of the year I will solve P vs NP. |
| 23:49:57 | → | Square2 joins (~Square4@user/square) |
| 23:50:58 | <monochrom> | OK this channel isn't very interested in P vs NP. I will finish Dependent Linear Haskell instead. >:) |
| 23:52:53 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 23:53:08 | <haskellbridge> | <thirdofmay18081814goya> monochrom: pls do |
| 23:53:41 | <monochrom> | :) |
| 23:54:22 | <monochrom> | I don't actually even know where to start. Don't hold your breath. |
| 23:56:09 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 246 seconds) |
| 23:57:21 | <haskellbridge> | <GunpowderGuy> monochrom: so idris2? |
| 23:57:38 | <haskellbridge> | <GunpowderGuy> idrsi2 is dependent linear haskell |
| 23:57:39 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 23:57:50 | <haskellbridge> | <GunpowderGuy> * idris2 |
All times are in UTC on 2024-09-04.