Logs on 2024-06-30 (liberachat/#haskell)
| 00:01:48 | × | OscarZ quits (~oscarz@mobile-access-5d6ab7-137.dhcp.inet.fi) (Quit: Leaving) |
| 00:14:40 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 00:25:30 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 00:26:23 | × | mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection) |
| 00:29:07 | × | onliner10_ quits (uid656258@user/onliner10) (Quit: Connection closed for inactivity) |
| 00:32:53 | → | mhatta joins (~mhatta@www21123ui.sakura.ne.jp) |
| 00:39:02 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 00:39:30 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:41:04 | → | califax joins (~califax@user/califx) |
| 00:44:44 | × | ft quits (~ft@i5C743B07.versanet.de) (Ping timeout: 268 seconds) |
| 00:45:59 | → | ft joins (~ft@mue-88-130-107-007.dsl.tropolys.de) |
| 00:46:51 | × | phma quits (~phma@host-67-44-208-9.hnremote.net) (Read error: Connection reset by peer) |
| 00:47:20 | → | phma joins (~phma@2001:5b0:215d:ae38:bf89:58e8:737e:e16c) |
| 00:51:49 | hololeap | is now known as progress-bot |
| 00:52:35 | progress-bot | is now known as hololeap |
| 01:13:17 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 01:17:41 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 240 seconds) |
| 01:25:03 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:26:04 | → | mikess joins (~mikess@user/mikess) |
| 01:33:42 | → | rvalue joins (~rvalue@user/rvalue) |
| 01:35:50 | → | nek0 joins (~nek0@user/nek0) |
| 01:45:19 | × | dcoutts quits (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 246 seconds) |
| 01:47:48 | → | dcoutts joins (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) |
| 01:51:22 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 01:57:13 | → | rosco joins (~rosco@175.136.155.137) |
| 02:05:04 | × | op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
| 02:05:35 | → | op_4 joins (~tslil@user/op-4/x-9116473) |
| 02:08:25 | × | nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 246 seconds) |
| 02:09:19 | → | nadja joins (~dequbed@banana-new.kilobyte22.de) |
| 02:10:56 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 02:11:33 | × | dyniec quits (~dyniec@dybiec.info) (Quit: WeeChat 4.2.2) |
| 02:12:55 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 268 seconds) |
| 02:14:47 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:17:43 | → | aaronv joins (~aaronv@user/aaronv) |
| 02:28:23 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:77d8:7bd:e37b:39ff) |
| 02:32:55 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 272 seconds) |
| 02:33:29 | → | nhar joins (~noah@c-73-237-54-185.hsd1.ga.comcast.net) |
| 02:37:42 | × | nhar quits (~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Client Quit) |
| 02:38:03 | → | nhar joins (~noah@c-73-237-54-185.hsd1.ga.comcast.net) |
| 02:42:30 | × | nhar quits (~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Client Quit) |
| 02:42:45 | → | nhar joins (~noah@c-73-237-54-185.hsd1.ga.comcast.net) |
| 02:44:23 | × | td_ quits (~td@i5387091C.versanet.de) (Ping timeout: 264 seconds) |
| 02:45:50 | → | td_ joins (~td@i5387093F.versanet.de) |
| 02:54:55 | × | nhar quits (~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Quit: leaving) |
| 02:55:53 | → | nhar joins (~noah@c-73-237-54-185.hsd1.ga.comcast.net) |
| 02:57:23 | → | bilegeek joins (~bilegeek@2600:1008:b057:7524:18e9:1f68:5cd:444a) |
| 02:59:01 | <nhar> | hello world! |
| 02:59:36 | <nhar> | is this the right place to ask questions? |
| 03:03:40 | → | aaronv joins (~aaronv@user/aaronv) |
| 03:04:49 | <mauke> | well, one of them |
| 03:05:00 | <mauke> | (hopefully they're haskell related) |
| 03:05:45 | <nhar> | oh good! My setup works! (first time IRC user...wasn't sure my Nix setup worked). |
| 03:05:53 | <nhar> | I do have a Haskell question though: |
| 03:06:25 | <nhar> | I am trying to write a function with the following type: traverseJoin :: (Monad t, Traversable t, Applicative f) => (a -> f (t b)) -> t a -> m (t b) |
| 03:07:30 | <mauke> | that looks wrong, even without the typo |
| 03:08:02 | <nhar> | How so? I'm not trying to write an instance for `traverse` if that's what you mean |
| 03:08:21 | <mauke> | where does that m come from? |
| 03:08:40 | <nhar> | that's a typo, it should be f |
| 03:08:54 | <mauke> | ah |
| 03:09:14 | <nhar> | essientially I'm looking for something that optimizes: join <$> traverse f x |
| 03:11:53 | <joeyadams> | :t \f x -> join <$> traverse f x |
| 03:11:54 | <lambdabot> | (Monad m, Traversable m, Applicative f) => (a1 -> f (m a2)) -> m a1 -> f (m a2) |
| 03:14:29 | <joeyadams> | :t concatMap |
| 03:14:30 | <lambdabot> | Foldable t => (a -> [b]) -> t a -> [b] |
| 03:19:22 | <joeyadams> | So are you asking if there's a generalized concatMap that isn't specialized to returning a list? |
| 03:20:54 | <nhar> | kind of. I am looking for something that is like traverse but instead of the function returning pure values wrapped in the Applicative it returns new sub-trees of the data structure your traverse that would be stitched in "on the way up" |
| 03:21:21 | <nhar> | traverse (f :: a -> m (t b)) x :: m (t (t b)) |
| 03:21:49 | <nhar> | and so join <$> traverse f x :: m (t b) |
| 03:22:03 | → | madhavanmiui joins (~madhavanm@2409:40f4:1030:9d51:8000::) |
| 03:22:13 | <nhar> | the `join <$>` part has to crawl through t again just to perform the join |
| 03:27:44 | × | robertm quits (robertm@lattice.rojoma.com) (Quit: WeeChat 3.8) |
| 03:30:19 | → | robertm joins (robertm@lattice.rojoma.com) |
| 03:34:02 | <joeyadams> | To make this easier to think about, I'll specialize f to [] and t to Tree, giving: traverseJoin :: (a -> [Tree b]) -> Tree a -> [Tree b] |
| 03:34:47 | <nhar> | good idea |
| 03:35:37 | × | madhavanmiui quits (~madhavanm@2409:40f4:1030:9d51:8000::) (Quit: Quit) |
| 03:35:45 | <Leary> | nhar: Perhaps you can use `Monoid (t b)` rather than `Monad t`? |
| 03:35:51 | <Leary> | :t \f -> getAp . foldMap (Ap . f) |
| 03:35:52 | <lambdabot> | forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1 |
| 03:39:31 | <nhar> | that kind of works..however: instance (Applicative f, Monoid a1) => Monoid (Ap f a1) |
| 03:39:54 | <nhar> | that would require a Monoid instance for `b` in my signature for traverseJoin |
| 03:41:25 | <Leary> | Not if `Monoid (t b)` is satisfied regardless of `b`. |
| 03:42:39 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 03:43:14 | <Leary> | The other option is Alternative. |
| 03:43:17 | <Leary> | :t \f -> getAp . fmap getAlt . foldMap (Ap . fmap Alt . f) |
| 03:43:18 | <lambdabot> | forall k (f1 :: * -> *) (t :: * -> *) (f2 :: k -> *) (a1 :: k) a2. (Foldable t, Applicative f1, Monoid (Alt f2 a1)) => (a2 -> f1 (f2 a1)) -> t a2 -> f1 (f2 a1) |
| 03:43:50 | <nhar> | Leary: true. but to be more transparent my `t` type is an AST and I don't see a reasonable way to make a Monoid or Alternative instance for that |
| 03:44:18 | <nhar> | data Exp a = Var a | Lam VarName (Exp a) | App (Exp a) (Exp a) |
| 03:44:39 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds) |
| 03:46:27 | <nhar> | I'm pretty sure at minimum I'll need Traversable t becuase Traversable is what re-constructs the original AST I'm folding over |
| 03:49:43 | <Leary> | If you really want to optimise `join <$> traverse f x` for that, you're probably best off just writing it by hand. |
| 03:51:15 | <nhar> | yeah...I think you're right. And if I need to make a new typeclass. Thanks for the help! |
| 03:57:23 | <nhar> | wait...I think I figured out a better approach: \x h -> lift x >>= h :: (MonadTrans f, Monad t) => (a -> f (t a)) -> t a -> f (t b) |
| 04:05:19 | <mauke> | (MonadTrans f, Monad t) => t a -> (a -> f t b) -> f t b |
| 04:12:35 | × | CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 04:13:09 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 04:15:17 | → | CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) |
| 04:23:19 | × | aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection) |
| 04:23:44 | → | aaronv joins (~aaronv@user/aaronv) |
| 04:25:04 | <Leary> | nhar: You can write `newtype TraverseT t f a = TraverseT{ runTraverseT :: f (t a) }; instance (Traversable t, Monad t, Monad f) => Monad (TraverseT t f)` and use `\f x -> runTraverseT (TraverseT (pure x) >>= TraverseT . f)`, but that bind will end up doing exactly what you're trying to avoid. |
| 04:25:41 | × | foul_owl quits (~kerry@185.219.141.162) (Ping timeout: 240 seconds) |
| 04:29:57 | → | lol_ joins (~lol@2603:3016:1e01:b940:c519:e2d2:dade:6025) |
| 04:30:59 | → | DreamDeckup joins (~DreamDeck@bras-base-lprrpq1404w-grc-06-184-145-181-233.dsl.bell.ca) |
| 04:32:01 | × | zzz quits (~yin@user/zero) (Ping timeout: 256 seconds) |
| 04:33:59 | <nhar> | Leary: Thanks! I think technically the MonadTrans direction is really what I'm looking for...you wouldn't happen to have used polysemy by any chance? |
| 04:34:03 | × | jcarpenter2 quits (~lol@2603:3016:1e01:b940:c8a1:76:d03d:bf70) (Ping timeout: 255 seconds) |
| 04:36:36 | <Leary> | nhar: Nope, and I don't recommend any of the early effect systems, especially if efficiency is a priority. Consider effectful or bluefin instead. |
| 04:38:08 | × | DreamDeckup quits (~DreamDeck@bras-base-lprrpq1404w-grc-06-184-145-181-233.dsl.bell.ca) (Ping timeout: 252 seconds) |
| 04:38:28 | → | DreamDeckup joins (~DreamDeck@194.127.199.29) |
| 04:38:29 | → | zzz joins (~yin@user/zero) |
| 04:40:48 | <nhar> | Leary: Thanks! I'll look into those! Not sure how to keep up with what's outdated etc... |
| 04:50:35 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 256 seconds) |
| 04:53:57 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 04:57:05 | → | aaronv joins (~aaronv@user/aaronv) |
| 05:05:30 | × | nhar quits (~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Quit: leaving) |
| 05:34:50 | × | DreamDeckup quits (~DreamDeck@194.127.199.29) (Remote host closed the connection) |
| 05:46:27 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 05:50:42 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 05:51:17 | → | rvalue joins (~rvalue@user/rvalue) |
| 05:57:17 | → | pavonia joins (~user@user/siracusa) |
| 06:17:17 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 240 seconds) |
| 06:22:24 | → | aaronv joins (~aaronv@user/aaronv) |
| 06:23:18 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:39:50 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 06:40:14 | × | machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 06:45:08 | → | euphores joins (~SASL_euph@user/euphores) |
| 06:54:24 | → | misterfish joins (~misterfis@84.53.85.146) |
| 07:00:09 | × | tt12310978 quits (~tt1231@syn-075-185-104-199.res.spectrum.com) (Quit: The Lounge - https://thelounge.chat) |
| 07:00:40 | × | bilegeek quits (~bilegeek@2600:1008:b057:7524:18e9:1f68:5cd:444a) (Quit: Leaving) |
| 07:00:48 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 07:00:48 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 07:00:48 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 07:00:48 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 07:00:48 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 07:00:48 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 07:01:12 | → | califax joins (~califax@user/califx) |
| 07:01:21 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 07:01:22 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 07:01:32 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 07:01:39 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 07:01:52 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 07:03:13 | → | tt123109783 joins (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) |
| 07:07:40 | × | rosco quits (~rosco@175.136.155.137) (Quit: Lost terminal) |
| 07:10:54 | × | joeyadams quits (~joeyadams@2603:6010:5100:2ed:77d8:7bd:e37b:39ff) (Quit: Leaving) |
| 07:16:42 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 07:17:05 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 07:18:20 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 07:23:04 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 246 seconds) |
| 07:25:16 | → | rosco joins (~rosco@175.136.155.137) |
| 07:36:40 | × | sprout quits (~quassel@2a02-a448-3a80-0-d123-5da7-9ae5-44be.fixed6.kpn.net) (Ping timeout: 268 seconds) |
| 07:37:21 | → | sprout joins (~quassel@2a02-a448-3a80-0-6981-debe-91f4-8f74.fixed6.kpn.net) |
| 07:37:36 | × | dcoutts quits (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 268 seconds) |
| 07:39:48 | → | acidjnk_new3 joins (~acidjnk@p200300d6e72cfb4649ca0157bfe844d2.dip0.t-ipconnect.de) |
| 07:52:11 | → | misterfish joins (~misterfis@046044172198.static.ipv4.heldenvannu.net) |
| 07:52:38 | → | madhavanmiui joins (~madhavanm@152.58.253.222) |
| 07:53:07 | × | madhavanmiui quits (~madhavanm@152.58.253.222) (Client Quit) |
| 07:55:34 | → | reuben joins (~reuben@183.82.114.12) |
| 07:57:02 | ← | reuben parts (~reuben@183.82.114.12) () |
| 07:59:54 | × | tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection) |
| 08:00:04 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 08:02:40 | → | reuben joins (~reuben@user/greuben) |
| 08:03:11 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:05:17 | → | aforemny joins (~aforemny@2001:9e8:6cdc:700:7c5a:7635:6125:375c) |
| 08:06:54 | × | reuben quits (~reuben@user/greuben) (Quit: Konversation terminated!) |
| 08:11:50 | → | mreh joins (~matthew@host86-160-168-12.range86-160.btcentralplus.com) |
| 08:16:35 | → | gmg joins (~user@user/gehmehgeh) |
| 08:25:09 | × | aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection) |
| 08:25:29 | → | aaronv joins (~aaronv@user/aaronv) |
| 08:38:16 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 08:39:16 | × | euleritian quits (~euleritia@dynamic-176-001-133-228.176.1.pool.telefonica.de) (Ping timeout: 268 seconds) |
| 08:40:29 | → | euleritian joins (~euleritia@dynamic-176-002-083-211.176.2.pool.telefonica.de) |
| 08:44:49 | → | defanor_ joins (~defanor@tart.uberspace.net) |
| 08:46:11 | × | mikess quits (~mikess@user/mikess) (Ping timeout: 264 seconds) |
| 08:52:12 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 08:54:14 | → | soverysour joins (~soverysou@81.196.150.219) |
| 08:54:14 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 08:54:14 | → | soverysour joins (~soverysou@user/soverysour) |
| 09:02:28 | → | TactfulCitrus joins (~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) |
| 09:13:08 | × | zzz quits (~yin@user/zero) (Ping timeout: 252 seconds) |
| 09:20:06 | → | zzz joins (~yin@user/zero) |
| 09:25:58 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:25:59 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 09:29:32 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 09:34:30 | → | emm joins (~emm@user/edmeme) |
| 09:41:18 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 09:46:21 | → | dcoutts joins (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) |
| 09:48:01 | → | simendsjo joins (~user@84.209.170.3) |
| 09:49:23 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:50:58 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 09:51:15 | × | misterfish quits (~misterfis@046044172198.static.ipv4.heldenvannu.net) (Ping timeout: 264 seconds) |
| 09:56:39 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 268 seconds) |
| 10:16:47 | → | misterfish joins (~misterfis@046044172198.static.ipv4.heldenvannu.net) |
| 10:19:18 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 256 seconds) |
| 10:22:15 | × | dcoutts quits (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 268 seconds) |
| 10:23:21 | × | zzz quits (~yin@user/zero) (Ping timeout: 256 seconds) |
| 10:23:21 | × | connrs quits (~connrs@user/connrs) (Read error: Connection reset by peer) |
| 10:24:33 | → | soverysour joins (~soverysou@81.196.150.219) |
| 10:24:33 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 10:24:33 | → | soverysour joins (~soverysou@user/soverysour) |
| 10:24:47 | → | __monty__ joins (~toonn@user/toonn) |
| 10:30:14 | → | zzz joins (~yin@user/zero) |
| 10:30:18 | → | dcoutts joins (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) |
| 10:37:21 | × | dcoutts quits (~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 268 seconds) |
| 10:40:54 | → | alexherbo2 joins (~alexherbo@2a02-8440-3215-598d-d54a-56ea-534f-abcf.rev.sfr.net) |
| 10:40:59 | → | connrs joins (~connrs@user/connrs) |
| 10:44:55 | × | alexherbo2 quits (~alexherbo@2a02-8440-3215-598d-d54a-56ea-534f-abcf.rev.sfr.net) (Remote host closed the connection) |
| 10:45:09 | → | alexherbo2 joins (~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net) |
| 10:45:15 | × | euleritian quits (~euleritia@dynamic-176-002-083-211.176.2.pool.telefonica.de) (Ping timeout: 264 seconds) |
| 10:46:12 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 255 seconds) |
| 10:47:18 | → | soverysour joins (~soverysou@81.196.150.219) |
| 10:47:18 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 10:47:18 | → | soverysour joins (~soverysou@user/soverysour) |
| 10:50:37 | → | euleritian joins (~euleritia@77.22.252.56) |
| 11:00:25 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 246 seconds) |
| 11:02:36 | × | mrmr15533434 quits (~mrmr@user/mrmr) (Quit: Bye, See ya later!) |
| 11:11:23 | × | misterfish quits (~misterfis@046044172198.static.ipv4.heldenvannu.net) (Ping timeout: 252 seconds) |
| 11:16:11 | <xerox> | anybody knows of a swift introduction to template haskell? I'd like to reify a very small subset of haskell (lambdas, applications, and a handful of functions) into a data tree that I want to operate on, I think TH is how I could go about it pretty directly? |
| 11:22:09 | → | mrmr155334346 joins (~mrmr@user/mrmr) |
| 11:26:20 | <haskellbridge> | <sm> ghc user guide maybe ? |
| 11:28:16 | → | misterfish joins (~misterfis@87.215.131.102) |
| 11:31:02 | <xerox> | yeah just stumbled upon that one, excellent |
| 11:32:01 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:33:22 | → | oo_miguel joins (~Thunderbi@78.10.207.46) |
| 11:35:21 | → | soverysour joins (~soverysou@81.196.150.219) |
| 11:35:21 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 11:35:21 | → | soverysour joins (~soverysou@user/soverysour) |
| 11:45:40 | × | alexherbo2 quits (~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net) (Remote host closed the connection) |
| 11:46:01 | → | alexherbo2 joins (~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net) |
| 11:49:12 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 268 seconds) |
| 11:56:01 | → | soverysour joins (~soverysou@user/soverysour) |
| 12:05:10 | × | misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 246 seconds) |
| 12:21:38 | × | alexherbo2 quits (~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net) (Remote host closed the connection) |
| 12:25:33 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:37:12 | → | misterfish joins (~misterfis@87.215.131.102) |
| 12:47:31 | × | euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 246 seconds) |
| 12:48:22 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 12:51:11 | × | puke quits (~puke@user/puke) (Remote host closed the connection) |
| 12:51:26 | → | puke joins (~puke@user/puke) |
| 12:58:05 | × | simendsjo quits (~user@84.209.170.3) (Ping timeout: 252 seconds) |
| 12:58:11 | → | alexherbo2 joins (~alexherbo@2a02-8440-3215-598d-c4fd-5ebf-ca0b-e80d.rev.sfr.net) |
| 13:01:17 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 240 seconds) |
| 13:09:47 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 13:13:01 | → | ystael joins (~ystael@user/ystael) |
| 13:14:04 | × | alexherbo2 quits (~alexherbo@2a02-8440-3215-598d-c4fd-5ebf-ca0b-e80d.rev.sfr.net) (Remote host closed the connection) |
| 13:30:01 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 268 seconds) |
| 13:32:04 | → | soverysour joins (~soverysou@user/soverysour) |
| 13:37:11 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 264 seconds) |
| 14:12:26 | → | soverysour joins (~soverysou@81.196.150.219) |
| 14:12:26 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 14:12:26 | → | soverysour joins (~soverysou@user/soverysour) |
| 14:15:41 | × | euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 14:16:15 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 14:16:49 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 256 seconds) |
| 14:19:47 | × | Teacup_ quits (~teacup@user/teacup) () |
| 14:20:05 | → | Teacup joins (~teacup@user/teacup) |
| 14:28:36 | → | greuben joins (~reuben@user/greuben) |
| 14:31:23 | → | soverysour joins (~soverysou@81.196.150.219) |
| 14:31:23 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 14:31:23 | → | soverysour joins (~soverysou@user/soverysour) |
| 14:36:29 | × | greuben quits (~reuben@user/greuben) (Quit: Konversation terminated!) |
| 14:46:14 | × | phma quits (~phma@2001:5b0:215d:ae38:bf89:58e8:737e:e16c) (Read error: Connection reset by peer) |
| 14:47:07 | → | phma joins (phma@2001:5b0:210b:8948:1a5:8d32:9eb9:6e63) |
| 14:48:02 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 268 seconds) |
| 15:02:52 | × | caryfitz quits (~caryfitz@2600:1700:e72:9000::47) (Remote host closed the connection) |
| 15:03:16 | → | caryfitz joins (~caryfitz@2600:1700:e72:9000::47) |
| 15:16:02 | → | soverysour joins (~soverysou@user/soverysour) |
| 15:21:01 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 268 seconds) |
| 15:49:57 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:51:56 | → | soverysour joins (~soverysou@81.196.150.219) |
| 15:51:56 | × | soverysour quits (~soverysou@81.196.150.219) (Changing host) |
| 15:51:56 | → | soverysour joins (~soverysou@user/soverysour) |
| 15:57:06 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 268 seconds) |
| 16:00:04 | → | srk- joins (~sorki@user/srk) |
| 16:00:26 | × | srk quits (~sorki@user/srk) (Ping timeout: 256 seconds) |
| 16:02:55 | srk- | is now known as srk |
| 16:09:50 | × | oo_miguel quits (~Thunderbi@78.10.207.46) (Quit: oo_miguel) |
| 16:16:22 | → | soverysour joins (~soverysou@user/soverysour) |
| 16:16:45 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 16:20:15 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds) |
| 16:20:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:20:57 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 16:21:27 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
| 16:22:11 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:23:28 | × | koz quits (~koz@121.99.240.58) (Quit: ZNC 1.8.2 - https://znc.in) |
| 16:24:45 | → | koz joins (~koz@121.99.240.58) |
| 16:26:09 | → | machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net) |
| 16:27:41 | → | Lawrence1erkheim joins (~LBerkheim@user/LawrenceBerkheim) |
| 16:27:44 | <Lawrence1erkheim> | hello |
| 16:29:37 | <Rembane> | Hi Lawrence1erkheim ! |
| 16:31:28 | <Lawrence1erkheim> | I had a dummy moment with a question, but then I googled it and figured it out haha |
| 16:31:44 | <Lawrence1erkheim> | my bad |
| 16:32:02 | <geekosaur> | rubber duck debugging at its finest |
| 16:32:33 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 16:33:05 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:33:08 | <Rembane> | Lawrence1erkheim: No worries, you just won the internet! |
| 16:34:05 | <Rembane> | Lawrence1erkheim: Mildly relevant: https://xkcd.com/979/ |
| 16:34:42 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 16:35:11 | → | rvalue joins (~rvalue@user/rvalue) |
| 16:36:43 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:af11:237f:c1e1:d41b) |
| 16:41:53 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 16:43:24 | <Lawrence1erkheim> | Uhm ok I'd love some advice on learning materials |
| 16:43:39 | <Lawrence1erkheim> | Basically I learned haskell aaaaages ago when I did my bsc |
| 16:43:57 | <Lawrence1erkheim> | Now I'm trying to refresh my knowledge because I'll assist a professor at the uni |
| 16:44:13 | <Lawrence1erkheim> | I opened up learnyouahaskell.com, and started going through that |
| 16:44:24 | <Lawrence1erkheim> | But I just figured out that I'm mostly familiar with the concepts |
| 16:45:29 | <Lawrence1erkheim> | However, when I opened up the last year's exercises, I found stuff like `Module bla bla bla`, `import`, etc. |
| 16:45:33 | → | mikess joins (~mikess@user/mikess) |
| 16:45:47 | <Lawrence1erkheim> | Which is different from the stuff that I just read which is basically functional programming concepts |
| 16:45:56 | <Lawrence1erkheim> | Can you suggest any resources? |
| 16:46:07 | <Lawrence1erkheim> | I'm not sure what to google because I don't know what that more engineering type of programming is called here |
| 16:47:21 | <Rembane> | Lawrence1erkheim: Real World Haskell is ancient by now, but might be worth giving a skim. |
| 16:47:53 | <Rembane> | Isn't there a list of resources in lambdabot or something? I can't remember the word to invoke them with though. |
| 16:48:27 | <Lawrence1erkheim> | thank you o7 |
| 16:49:05 | <Lawrence1erkheim> | I very rarely come on to IRC, I barely managed to get on here so I'm affraid to brick my irssi while trying to invoke a bot |
| 16:49:11 | <haskellbridge> | <sm> @ where and also https://haskell-links.org |
| 16:49:49 | <Rembane> | Lawrence1erkheim: A potential stupid advice is to try to do the exercises for the course you'll work with yourself and ask here when you get stuck. :D |
| 16:49:55 | <Rembane> | @where |
| 16:49:55 | <lambdabot> | @where <key>, return element associated with key |
| 16:50:01 | <Rembane> | lambdabot: @where |
| 16:50:02 | <lambdabot> | @where <key>, return element associated with key |
| 16:50:09 | <Rembane> | lambdabot: where |
| 16:52:23 | <Lawrence1erkheim> | Rembane: Yea that's also on the table. For now I'm thinking that doing some reading will make the entire experience way smoother, although I _will_ have to do those exercises myself. |
| 16:54:28 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 16:54:33 | <Rembane> | Lawrence1erkheim: Woohoo! I was mostly hoping they would give you some terminology and break up the big gap of blank in some smaller pieces. |
| 16:56:28 | <mreh> | Lawrence1erkheim: do you mind saying which uni? |
| 16:57:56 | <Lawrence1erkheim> | mreh: I'd rather not, the internet is a spooky place. |
| 16:58:56 | → | dyniec joins (~dyniec@dybiec.info) |
| 17:07:30 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 17:10:44 | <mreh> | I was looking at RWH the other day, it's still very relevant I would say. And free. |
| 17:11:09 | <mreh> | https://book.realworldhaskell.org/read/ |
| 17:11:33 | <Rembane> | I think it depends on which parts of it you look at. It's not that easy to follow along because the version of Haskell is ancient and so are the packages. |
| 17:11:57 | <mreh> | depends on his syllabus too |
| 17:12:17 | <Rembane> | Indeed. This is where it gets tricky. :) |
| 17:13:03 | <mreh> | YouTube is super good these days |
| 17:13:09 | <dolio> | It doesn't seem likely that a college course on Haskell is going to be super focused on the details of particular trendy libraries. |
| 17:13:45 | <dolio> | The concrete stuff asked about above just seems to be how to write programs with multiple files, or using libraries. |
| 17:14:06 | → | dcoutts joins (~duncan@212.187.183.33) |
| 17:14:22 | <mreh> | did someone mention RWH?? |
| 17:14:37 | <dolio> | Yeah. |
| 17:14:43 | <mreh> | sorry ignore that |
| 17:14:57 | <mreh> | Lawrence1erkheim: honestly I would just do the exercises and ask in here if you get stuck |
| 17:15:28 | <geekosaur> | I'd look at CIS194 and/or the wikibook |
| 17:15:32 | <geekosaur> | @where cis194 |
| 17:15:32 | <lambdabot> | <https://github.com/byorgey/haskell-course>,<https://www.seas.upenn.edu/~cis194/spring13/lectures.html> |
| 17:15:38 | <geekosaur> | @where wikibook |
| 17:15:38 | <lambdabot> | http://en.wikibooks.org/wiki/Haskell |
| 17:15:57 | <geekosaur> | byorgey keeps the first one up to date, the community keeps the second up to date |
| 17:16:07 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:16:14 | <monochrom> | If the question is "what are module and import", the wikibook up there has it; but I learned it from the Haskell Report itself, the wikibook didn't exist back then. (Alternatively, it should be very easy to guess.) |
| 17:16:54 | <Lawrence1erkheim> | Very nice |
| 17:16:57 | <monochrom> | In the university setting, RWH is likely tangential. I mean, it is not called AWH for a reason. >:) |
| 17:16:58 | <Lawrence1erkheim> | Thanks yall |
| 17:17:17 | <monochrom> | or RUH haha |
| 17:18:05 | <monochrom> | https://soupi.github.io/rfc/reading_simple_haskell/ can get you started quickly if you just need to read. |
| 17:18:33 | <dolio> | It might explain the mundane details of how you actually compile and run a Haskell project, though. Which, like, the gentle introduction doesn't seem to do. |
| 17:19:13 | <geekosaur> | the GI is fine if you already know SML/NJ, including how to build and run programs. it's lousy for any other background |
| 17:19:18 | <monochrom> | (Well, I learned both Chinese and English by "just read/listen" and then "just stochastic parrot". Don't underestimate the power of that.) |
| 17:19:43 | <Rembane> | Stochastic parrot is one of my favourite birds! |
| 17:19:52 | <dolio> | Well, I was thinking about, 'I already know FP principles.' But it also doesn't provide the missing information. |
| 17:19:52 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:19:53 | × | dcoutts quits (~duncan@212.187.183.33) (Ping timeout: 252 seconds) |
| 17:20:13 | <dolio> | Also it's too old for any build tools to exist. |
| 17:20:29 | <dolio> | Which I assume are being used. |
| 17:20:48 | <geekosaur> | it even predates `ghc --make`! |
| 17:20:59 | <dolio> | Hahaha. Yeah. |
| 17:21:00 | <geekosaur> | muchless that becoming the default |
| 17:21:04 | <Lawrence1erkheim> | omg based it explains what the `::` notation means |
| 17:22:05 | <Rembane> | Lawrence1erkheim: I need to see that explanation! Where did you find it? |
| 17:23:25 | <Lawrence1erkheim> | I'm just going through https://soupi.github.io/rfc/reading_simple_haskell/ that was suggested |
| 17:23:55 | <Lawrence1erkheim> | Now looking at what `data` means. I found some lesson `.hs` files, and at lesson 2 they started dropping the `data` blablabla |
| 17:24:22 | → | simendsjo joins (~user@84.209.170.3) |
| 17:24:30 | <mreh> | > data Basedness = Based | Debased |
| 17:24:32 | <lambdabot> | <hint>:1:1: error: parse error on input ‘data’ |
| 17:24:42 | <mreh> | damn, I gotta brush up |
| 17:24:54 | <Lawrence1erkheim> | I find the `Integer -> Integer -> Integer` very strange though |
| 17:25:15 | <Lawrence1erkheim> | I assume it denotes a function that takes two integers and returns one |
| 17:25:21 | <monochrom> | It means `Integer -> (Integer -> Integer)` if you know what I mean. |
| 17:25:22 | <mreh> | functions in haskell are curried |
| 17:25:42 | <mreh> | s/curried/Curried/ |
| 17:25:46 | <Lawrence1erkheim> | mmmm |
| 17:26:13 | <mreh> | :t curry |
| 17:26:14 | <lambdabot> | ((a, b) -> c) -> a -> b -> c |
| 17:28:21 | <Rembane> | Lawrence1erkheim: Does slide 22 make you wiser or more confused wrt functions? |
| 17:29:33 | <mreh> | :t (.) |
| 17:29:35 | <lambdabot> | (b -> c) -> (a -> b) -> a -> c |
| 17:30:54 | <mreh> | I guess the is author is grouping the types according to how they're parsed |
| 17:31:11 | <mreh> | -> is a type constructor |
| 17:31:26 | <monochrom> | Yes sometimes I add redundant parens when teaching. |
| 17:31:30 | <mreh> | :k (->) |
| 17:31:31 | <lambdabot> | * -> * -> * |
| 17:32:01 | <mreh> | that's its kind signature, it takes two types and becomes a third |
| 17:32:13 | <monochrom> | When I teach >>= I am like "foo >>= (\x -> bar >>= (\y -> ...". (I will comment "those parens are optional".) |
| 17:32:42 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds) |
| 17:32:54 | mreh | is available for Haskell tutoring |
| 17:33:06 | <mreh> | monochrom: do you do private tutoring? |
| 17:33:31 | <monochrom> | No unless referral from a friend. |
| 17:34:29 | <mreh> | I'm just trying to monetize my addiction |
| 17:34:32 | <monochrom> | Hahaha that means I am like those barristers in some countries. Not allowed to advertise and seek clients. Must sit there wait for solicitors to forward clients. |
| 17:35:08 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 17:35:21 | <monochrom> | OK my situation is just because I have already got teaching contracts at uni, so I don't need more monetization. |
| 17:35:38 | <Rembane> | monochrom: Which one of (>>=) and (>=>) is easiest to teach? |
| 17:35:52 | <monochrom> | Plus, no one ever asked me for Haskell tutoring. It's always boring stuff like discrete math and NP-completeness.... |
| 17:36:29 | <monochrom> | I don't know. I stick to >>= because it is more pragmatic and idiomatic. |
| 17:36:52 | → | pavonia joins (~user@user/siracusa) |
| 17:37:18 | <Rembane> | monochrom: Got it! What makes it more idiomatic? |
| 17:38:08 | <monochrom> | Just frequency in code people write. |
| 17:40:48 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 17:40:53 | → | dcoutts joins (~duncan@ip-185-104-136-57.ptr.icomera.net) |
| 17:41:55 | <monochrom> | But I think I can describe why it's more pragmatic. |
| 17:42:15 | <Rembane> | Sweet! |
| 17:42:27 | → | nhar joins (~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net) |
| 17:43:00 | <monochrom> | You often need the equivalent of "... >>= \x -> ... x occurs a million times in a million levels of scopes ...". With >>= or do, you just write exactly that directly. |
| 17:44:38 | <Rembane> | That's true, there's a quite straightforward mechanical translation between them that can be done in the head too! |
| 17:44:46 | <monochrom> | With >=>, you have to introduce tuples and then eliminate them. It is indirect, it's an encoding. I am not even commenting on efficiency performance. I am commenting on whether you write what you mean or you write a translation and then the reader has to untranslate. |
| 17:45:13 | <monochrom> | And you know it's true because why else the Arrow people went out of their way to invent do-proc notation. |
| 17:45:59 | <ncf> | tuples? |
| 17:46:02 | <Rembane> | I don't think you have to interact with tuples, let me see... |
| 17:46:03 | <jackdk> | I find that teaching is good for highlighting how `do`-notation works, and the sort of code that people usually write. I find that `(>=>)` is good for highlighting the laws in an obvious way, and highlighting `join` makes it map more cleanly to the traditional definitions. It is often a good exercise to ask people to write each in terms of the other two. |
| 17:46:06 | <Rembane> | :t (>=>) |
| 17:46:07 | <lambdabot> | Monad m => (a -> m b) -> (b -> m c) -> a -> m c |
| 17:46:12 | <probie> | I use `(>>=)` a lot more than `(>=>)`. `(>=>)` is nice for stating the laws because it's pretty much composition, but using it is about as ergonomic as writing all functions point-free |
| 17:46:14 | <Rembane> | Nah, it's composition |
| 17:46:17 | <Rembane> | Monad composition |
| 17:46:26 | <ncf> | the (>=>)/(>>=) debate should be entirely analogous to the (.)/($) debate |
| 17:46:40 | <Rembane> | ncf: Yes! Just add monads! |
| 17:46:43 | <geekosaur> | right, but you more often use pure computations in monadic contexts than you compose monadic operations |
| 17:46:52 | <geekosaur> | (the former being (>>=) |
| 17:46:55 | <geekosaur> | ) |
| 17:47:17 | <Rembane> | It's sadly quite hard to mix (<&>) and (>=>) |
| 17:47:33 | <mreh> | :t (<&>) |
| 17:47:35 | <lambdabot> | Functor f => f a -> (a -> b) -> f b |
| 17:47:44 | <probie> | I'd say it's closer to `(.)`/`(&)` |
| 17:47:58 | <probie> | :t (>>=) |
| 17:48:00 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 17:48:01 | <probie> | :t (&) |
| 17:48:02 | <lambdabot> | a -> (a -> b) -> b |
| 17:48:06 | <probie> | :t (=<<) |
| 17:48:07 | <lambdabot> | Monad m => (a -> m b) -> m a -> m b |
| 17:48:09 | <probie> | :t ($) |
| 17:48:10 | <lambdabot> | (a -> b) -> a -> b |
| 17:53:16 | <monochrom> | A while ago I also thought about how to make >>= more theoretically pleasing. I haven't finished, but I think the first step is to flip the argument order, (a -> m b) -> (m a -> m b). Then it is just the unsurprising functor from the Kleisli category back to the original category. |
| 17:53:33 | <Lawrence1erkheim> | Oh my lord computerphile are so goated |
| 17:53:41 | <Lawrence1erkheim> | I get currying now |
| 17:53:46 | <Lawrence1erkheim> | Wait no, let me fix that |
| 17:53:51 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:53:51 | <Lawrence1erkheim> | I think I get currying now* |
| 17:57:36 | <mreh> | Is there an equivalent to a Map at the type level? |
| 17:58:53 | <nhar> | mreh: i found this: https://hackage.haskell.org/package/type-level-sets-0.7 |
| 17:58:57 | × | dcoutts quits (~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 256 seconds) |
| 17:59:45 | <mreh> | google is your friend |
| 17:59:49 | <mreh> | nhar: thx |
| 18:00:07 | × | soverysour quits (~soverysou@user/soverysour) (Ping timeout: 260 seconds) |
| 18:00:36 | <nhar> | mreh: np! Not sure how user friendly it is - but if all else fails you could implement your own if your type-level-fu is up to it |
| 18:00:43 | <mreh> | I'm generating GLSL and want to see if I can statically check all the vertex buffers and uniforms are there when it comes to run it |
| 18:00:54 | <mreh> | nhar: I'm working on that |
| 18:01:21 | <mreh> | Thinking With Types is a pretty nice book. |
| 18:02:15 | <nhar> | > I'm generating GLSL... |
| 18:02:17 | <lambdabot> | <hint>:1:23: error: |
| 18:02:17 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 18:02:23 | <nhar> | I'm not sure that that is... |
| 18:02:33 | <nhar> | what is GLSL? |
| 18:02:52 | <mreh> | OpenGL Shading Language |
| 18:02:54 | <nhar> | And I thought it was a great read! Super duper helpful |
| 18:03:01 | <Rembane> | > -- Markdown block quotes doesn't really work here. :) |
| 18:03:02 | <lambdabot> | <no location info>: error: |
| 18:03:02 | <lambdabot> | not an expression: ‘-- Markdown block quotes doesn't really work here. :)’ |
| 18:03:05 | <Rembane> | :D |
| 18:03:06 | <mreh> | nhar: has it been helpful? |
| 18:03:23 | <nhar> | Rembane: thnkx! I'm new to IRC and have no clue what I'm doing xD |
| 18:03:25 | <mreh> | I'm hoping I can actually tackle the stuff I want to do with types |
| 18:04:39 | <nhar> | mreh: I've never done graphics before but it does sure sound like a challenge. From my experience I'm typically in the boat of "make your types super strong"...though I wish the UI for typelevel programing in haskell just re-used the value-level syntax... |
| 18:04:54 | <Rembane> | mreh: No worries! We're all here to learn. :D |
| 18:05:11 | <mreh> | nhar: ^ |
| 18:05:33 | <nhar> | has anyone ever heard of co-contextual type systems? https://www.informatik.uni-marburg.de/~seba/publications/cocontextual-type-checking.pdf |
| 18:05:43 | <nhar> | Rembane: thanks! |
| 18:06:16 | <nhar> | I'm learning how to implement a hindley-milner-damas type inference algorithm and it's hurting my brain...thought this might be a simpler solution... |
| 18:06:18 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 255 seconds) |
| 18:06:21 | <monochrom> | Ugh type-level GLSL haha |
| 18:07:42 | <mreh> | it's only inputs to the pipeline that I'm going to record at the type level |
| 18:08:58 | <mreh> | I might make something a bit more abstract for writing the shader code |
| 18:09:28 | <monochrom> | I have not heard of the name "co-contextual", but Pierce's TaPL definitely presents type inference that way. |
| 18:10:15 | <nhar> | mreh: is GLSL a strongly typed language? |
| 18:10:16 | <monochrom> | Err maybe not, I am not reading carefully. |
| 18:11:11 | <mreh> | nhar: well, there are implicit casts, but the types are enforced by the compiler |
| 18:11:27 | <nhar> | monochrom: yeah. TaPL (types and programing languages?) The typing systems there start with simply-typed lambda calculus and kinda ends at F-w (or F*...can't remember which)...I don't think he covers hindley-milner |
| 18:11:51 | <mreh> | so it's strong but not static |
| 18:12:35 | <nhar> | mreh: oh fun...so you're leveraging the HS type sytem to make sure you're generating GLSL type-correct code? |
| 18:13:30 | <mreh> | nhar: not quite, mainly taking out all the boilerplate of buffering data and then sprinkling some types on top |
| 18:15:26 | <monochrom> | Chapter 22 "type reconstruction" is type inference. |
| 18:15:48 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 18:16:27 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds) |
| 18:16:29 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 240 seconds) |
| 18:17:31 | <nhar> | mreh: nice! Well, good luck! |
| 18:18:19 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 18:18:38 | <nhar> | monochrom: I'll have to pull it off the shelf. If you, by chance, remember: does the term-level syntax require type annotations? I'm implementing a language and I'd rather my user's not need type annotations |
| 18:18:45 | Lord_of_Life_ | is now known as Lord_of_Life |
| 18:18:57 | <monochrom> | Does not. |
| 18:19:01 | → | leah2 joins (~leah@vuxu.org) |
| 18:19:33 | × | mreh quits (~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 268 seconds) |
| 18:19:50 | <nhar> | monochrom: ooo! Ok, I'll have a look. Most of the material on hidnley-milner is a bit obtuse. |
| 18:19:53 | <nhar> | Thanks! |
| 18:20:46 | <monochrom> | I wrote https://www.cs.utoronto.ca/~trebla/CSCC24-2024-Summer/11-type-inference.html for my course. |
| 18:21:33 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:24:03 | <nhar> | monochrom: thanks so much! i'll take a look. My goal is to implement the algorithms using recursion-schemes |
| 18:25:14 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 18:25:19 | × | nhar quits (~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net) (Changing host) |
| 18:25:19 | → | nhar joins (~noah@user/nhar) |
| 18:27:14 | → | aaronv joins (~aaronv@user/aaronv) |
| 18:30:51 | → | cheater_ joins (~Username@user/cheater) |
| 18:33:35 | × | cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds) |
| 18:33:37 | cheater_ | is now known as cheater |
| 18:37:28 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 18:38:03 | → | Maxdaman1us joins (~Maxdamant@user/maxdamantus) |
| 18:39:35 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 264 seconds) |
| 18:40:36 | → | TheCoffeMaker_ joins (~TheCoffeM@200.114.213.75) |
| 18:41:26 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds) |
| 18:42:06 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 18:43:54 | × | nhar quits (~noah@user/nhar) (Ping timeout: 268 seconds) |
| 18:46:22 | × | mikess quits (~mikess@user/mikess) (Ping timeout: 268 seconds) |
| 18:46:41 | → | nhar joins (~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net) |
| 18:47:16 | × | nhar quits (~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net) (Changing host) |
| 18:47:16 | → | nhar joins (~noah@user/nhar) |
| 18:49:19 | <nhar> | monochrom: this is super helpful and well written. Thanks again |
| 18:55:17 | <Lawrence1erkheim> | revisiting haskel after a masters is so good |
| 18:55:33 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 18:56:14 | × | TheCoffeMaker_ quits (~TheCoffeM@200.114.213.75) (Ping timeout: 268 seconds) |
| 18:58:53 | → | TheCoffeMaker_ joins (~TheCoffeM@200.114.213.75) |
| 19:00:15 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 264 seconds) |
| 19:03:46 | <nhar> | Lawrence1erkheim: how so? |
| 19:05:24 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 19:05:51 | → | KingTrent joins (~KingTrent@111.92.44.73) |
| 19:06:39 | ← | KingTrent parts (~KingTrent@111.92.44.73) (Leaving) |
| 19:15:20 | × | TheCoffeMaker_ quits (~TheCoffeM@200.114.213.75) (Quit: So long and thanks for all the fish) |
| 19:19:17 | × | simendsjo quits (~user@84.209.170.3) (Ping timeout: 272 seconds) |
| 19:24:38 | → | Joao[3] joins (~Joao003@190.108.99.178) |
| 19:26:58 | → | mreh joins (~matthew@host86-160-168-12.range86-160.btcentralplus.com) |
| 19:29:22 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 19:29:38 | → | gmg joins (~user@user/gehmehgeh) |
| 19:30:26 | × | rosco quits (~rosco@175.136.155.137) (Quit: Lost terminal) |
| 19:37:46 | × | joeyadams quits (~joeyadams@2603:6010:5100:2ed:af11:237f:c1e1:d41b) (Quit: Leaving) |
| 19:37:47 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 19:42:51 | → | alexherbo2 joins (~alexherbo@2a02-8440-3215-598d-b470-a88f-97cf-942e.rev.sfr.net) |
| 19:46:11 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 264 seconds) |
| 19:49:45 | × | nhar quits (~noah@user/nhar) (Quit: leaving) |
| 19:50:59 | × | pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-45-67-70-24-166.dsl.bell.ca) (Ping timeout: 264 seconds) |
| 19:52:47 | → | pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-45-67-70-24-166.dsl.bell.ca) |
| 20:00:30 | × | Lawrence1erkheim quits (~LBerkheim@user/LawrenceBerkheim) (Quit: leaving) |
| 20:02:40 | × | phma quits (phma@2001:5b0:210b:8948:1a5:8d32:9eb9:6e63) (Read error: Connection reset by peer) |
| 20:03:09 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:03:26 | → | phma joins (~phma@2001:5b0:210f:618:1292:6c24:64e4:74a) |
| 20:06:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:08:55 | × | Joao[3] quits (~Joao003@190.108.99.178) (Quit: Bye!) |
| 20:42:54 | × | mreh quits (~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 255 seconds) |
| 20:57:39 | → | dcoutts joins (~duncan@ip-185-104-136-57.ptr.icomera.net) |
| 21:02:04 | → | dcoutts_ joins (~duncan@ip-185-104-136-57.ptr.icomera.net) |
| 21:02:42 | × | dcoutts quits (~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 255 seconds) |
| 21:05:26 | × | aaronv quits (~aaronv@user/aaronv) (Ping timeout: 268 seconds) |
| 21:07:43 | → | mikess joins (~mikess@user/mikess) |
| 21:16:58 | × | infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection) |
| 21:17:27 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:18:28 | × | phma quits (~phma@2001:5b0:210f:618:1292:6c24:64e4:74a) (Read error: Connection reset by peer) |
| 21:19:04 | → | infinity0 joins (~infinity0@pwned.gg) |
| 21:27:08 | × | mxs9 quits (~mxs@user/mxs) (Quit: The Lounge - https://thelounge.chat) |
| 21:30:34 | → | phma joins (~phma@2001:5b0:215a:ef08:a1:7264:bc90:3efa) |
| 21:30:55 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 21:32:40 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Excess Flood) |
| 21:33:11 | → | aaronv joins (~aaronv@user/aaronv) |
| 21:34:38 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 21:36:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:38:49 | → | tzh_ joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 21:40:35 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Ping timeout: 252 seconds) |
| 21:41:39 | × | dcoutts_ quits (~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 264 seconds) |
| 21:43:05 | × | aaronv quits (~aaronv@user/aaronv) (Quit: Leaving) |
| 21:48:53 | × | tzh_ quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Ping timeout: 256 seconds) |
| 21:50:01 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 21:54:35 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:58:39 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 22:01:12 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 22:12:08 | → | lain` joins (lain`@user/lain/x-9874679) |
| 22:12:40 | → | dcoutts_ joins (~duncan@ip-185-104-136-57.ptr.icomera.net) |
| 22:14:03 | → | dcoutts__ joins (~duncan@212.187.244.86) |
| 22:16:48 | × | alexherbo2 quits (~alexherbo@2a02-8440-3215-598d-b470-a88f-97cf-942e.rev.sfr.net) (Remote host closed the connection) |
| 22:17:23 | × | dcoutts_ quits (~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 264 seconds) |
| 22:18:00 | → | alexherbo2 joins (~alexherbo@2a02-8440-3215-598d-4c2c-7398-d9af-2ab7.rev.sfr.net) |
| 22:20:18 | → | dcoutts_ joins (~duncan@185.201.60.220) |
| 22:21:31 | × | alexherbo2 quits (~alexherbo@2a02-8440-3215-598d-4c2c-7398-d9af-2ab7.rev.sfr.net) (Remote host closed the connection) |
| 22:23:01 | × | dcoutts__ quits (~duncan@212.187.244.86) (Ping timeout: 256 seconds) |
| 22:23:40 | → | ss4 joins (~wootehfoo@user/wootehfoot) |
| 22:27:15 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 264 seconds) |
| 22:27:31 | × | misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 260 seconds) |
| 22:28:25 | × | dcoutts_ quits (~duncan@185.201.60.220) (Read error: Connection reset by peer) |
| 22:31:23 | × | Nixkernal quits (~Nixkernal@240.17.194.178.dynamic.cust.swisscom.net) (Ping timeout: 256 seconds) |
| 22:36:32 | × | nshepperd2 quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Quit: The Lounge - https://thelounge.chat) |
| 22:36:56 | → | mxs9 joins (~mxs@user/mxs) |
| 22:37:22 | → | nshepperd2 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) |
| 22:37:24 | × | lain` quits (lain`@user/lain/x-9874679) (Remote host closed the connection) |
| 22:37:52 | → | lain` joins (lain`@user/lain/x-9874679) |
| 22:37:57 | × | nshepperd2 quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Client Quit) |
| 22:38:27 | × | lain` quits (lain`@user/lain/x-9874679) (Remote host closed the connection) |
| 22:38:54 | → | lain` joins (lain`@user/lain/x-9874679) |
| 22:39:50 | × | lain` quits (lain`@user/lain/x-9874679) (Remote host closed the connection) |
| 22:40:17 | → | lain` joins (lain`@user/lain/x-9874679) |
| 22:40:21 | × | zzz quits (~yin@user/zero) (Ping timeout: 255 seconds) |
| 22:40:28 | → | nshepperd2 joins (~nshepperd@2a01:4f9:3b:4cc9::2) |
| 22:41:22 | × | nshepperd2 quits (~nshepperd@2a01:4f9:3b:4cc9::2) (Client Quit) |
| 22:42:52 | → | joeyadams joins (~joeyadams@2603:6010:5100:2ed:2bef:3f32:3ac3:d5e) |
| 22:43:39 | → | dcoutts joins (~duncan@94.119.32.12) |
| 22:46:12 | → | nshepperd2 joins (~nshepperd@2a01:4f9:3b:4cc9::2) |
| 22:46:18 | <monochrom> | w00t new cabal-install! |
| 22:47:19 | → | zzz joins (~yin@user/zero) |
| 22:48:16 | × | dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in) |
| 22:49:45 | → | dolio joins (~dolio@130.44.134.54) |
| 22:53:16 | × | dcoutts quits (~duncan@94.119.32.12) (Remote host closed the connection) |
| 22:53:18 | × | dolio quits (~dolio@130.44.134.54) (Client Quit) |
| 22:53:34 | → | dcoutts joins (~duncan@94.119.32.5) |
| 22:53:46 | × | nshepperd2 quits (~nshepperd@2a01:4f9:3b:4cc9::2) (Quit: The Lounge - https://thelounge.chat) |
| 22:53:55 | → | nshepperd2 joins (~nshepperd@2a01:4f9:3b:4cc9::2) |
| 22:55:18 | × | nshepperd2 quits (~nshepperd@2a01:4f9:3b:4cc9::2) (Client Quit) |
| 22:55:26 | → | nshepperd2 joins (~nshepperd@2a01:4f9:3b:4cc9::2) |
| 22:56:26 | → | dolio joins (~dolio@130.44.134.54) |
| 22:59:23 | × | dcoutts quits (~duncan@94.119.32.5) (Ping timeout: 264 seconds) |
| 23:00:27 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:03:34 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:06:13 | → | misterfish joins (~misterfis@84.53.85.146) |
| 23:07:01 | × | emm quits (~emm@user/edmeme) (Ping timeout: 246 seconds) |
| 23:09:08 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 252 seconds) |
| 23:14:11 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 23:20:04 | × | mxs9 quits (~mxs@user/mxs) (Quit: The Lounge - https://thelounge.chat) |
| 23:30:01 | → | mxs9 joins (~mxs@user/mxs) |
| 23:31:08 | × | ss4 quits (~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds) |
| 23:42:50 | × | phma quits (~phma@2001:5b0:215a:ef08:a1:7264:bc90:3efa) (Read error: Connection reset by peer) |
| 23:45:46 | → | phma joins (phma@2001:5b0:2144:3258:22dc:c425:bf48:7057) |
| 23:48:09 | × | phma quits (phma@2001:5b0:2144:3258:22dc:c425:bf48:7057) (Read error: Connection reset by peer) |
| 23:54:16 | × | misterfish quits (~misterfis@84.53.85.146) (Ping timeout: 246 seconds) |
All times are in UTC on 2024-06-30.