2024/06/30

2024-06-30 00:00:12 +0200 <geekosaur> I'll agree with that
2024-06-30 00:00:34 +0200 <geekosaur> for that matter, I have no formal CS training and barely any programming training (I once took a fortran course)
2024-06-30 00:01:27 +0200 <zzz> that being said, i recognise the importance of knowing
2024-06-30 00:02:21 +0200 <geekosaur> but in this case, I'll also argue that many of the rules you have to know about aren't just from the Report; they're from how early GHC devs chose to implement them and the resulting technical debt
2024-06-30 00:02:30 +0200 <geekosaur> cf. Integer behavior
2024-06-30 00:02:52 +0200 <geekosaur> and you can't get that even from the GHC manual
2024-06-30 00:04:12 +0200 <geekosaur> much of it you have to get by reading the source to the ghc-bignum package
2024-06-30 00:05:21 +0200 <geekosaur> which you won't even know about unless you get curious about ghc-pkg --global output, or pay very close attention to ghc release notes
2024-06-30 00:07:29 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 268 seconds)
2024-06-30 00:11:00 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 00:11:48 +0200mikess(~mikess@user/mikess) (Ping timeout: 268 seconds)
2024-06-30 00:16:26 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-06-30 00:38:19 +0200emm(~emm@user/edmeme) (Ping timeout: 268 seconds)
2024-06-30 00:46:10 +0200xdminsy(~xdminsy@117.147.70.231) (Quit: Konversation terminated!)
2024-06-30 00:46:24 +0200aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2024-06-30 00:46:36 +0200xdminsy(~xdminsy@117.147.70.231)
2024-06-30 00:46:43 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 00:48:30 +0200mikess(~mikess@user/mikess)
2024-06-30 01:01:07 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-06-30 01:07:11 +0200mikess(~mikess@user/mikess) (Ping timeout: 264 seconds)
2024-06-30 01:10:53 +0200acidjnk_new3(~acidjnk@p200300d6e714dc64f17ffbaa6306596b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2024-06-30 01:17:10 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 268 seconds)
2024-06-30 01:17:59 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-06-30 01:27:20 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-06-30 01:28:32 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-06-30 01:29:25 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 256 seconds)
2024-06-30 01:30:58 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 01:34:48 +0200justsomeguy(~justsomeg@user/justsomeguy)
2024-06-30 01:41:01 +0200madeleine-sydney(~madeleine@c-71-229-185-228.hsd1.co.comcast.net) (Remote host closed the connection)
2024-06-30 01:42:10 +0200alexherbo2(~alexherbo@2a02-8440-3216-58a7-4198-eabe-8a40-71c0.rev.sfr.net) (Remote host closed the connection)
2024-06-30 01:55:06 +0200OscarZ(~oscarz@mobile-access-5d6ab7-137.dhcp.inet.fi)
2024-06-30 01:55:16 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2024-06-30 01:57:52 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-06-30 01:59:01 +0200pavonia(~user@user/siracusa)
2024-06-30 02:01:48 +0200OscarZ(~oscarz@mobile-access-5d6ab7-137.dhcp.inet.fi) (Quit: Leaving)
2024-06-30 02:14:40 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-06-30 02:25:30 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-06-30 02:26:23 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection)
2024-06-30 02:29:07 +0200onliner10_(uid656258@user/onliner10) (Quit: Connection closed for inactivity)
2024-06-30 02:32:53 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp)
2024-06-30 02:39:02 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2024-06-30 02:39:30 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-06-30 02:41:04 +0200califax(~califax@user/califx)
2024-06-30 02:44:44 +0200ft(~ft@i5C743B07.versanet.de) (Ping timeout: 268 seconds)
2024-06-30 02:45:59 +0200ft(~ft@mue-88-130-107-007.dsl.tropolys.de)
2024-06-30 02:46:51 +0200phma(~phma@host-67-44-208-9.hnremote.net) (Read error: Connection reset by peer)
2024-06-30 02:47:20 +0200phma(~phma@2001:5b0:215d:ae38:bf89:58e8:737e:e16c)
2024-06-30 02:51:49 +0200hololeapprogress-bot
2024-06-30 02:52:35 +0200progress-bothololeap
2024-06-30 03:13:17 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 240 seconds)
2024-06-30 03:17:41 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 240 seconds)
2024-06-30 03:25:03 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-06-30 03:26:04 +0200mikess(~mikess@user/mikess)
2024-06-30 03:33:42 +0200rvalue(~rvalue@user/rvalue)
2024-06-30 03:35:50 +0200nek0(~nek0@user/nek0)
2024-06-30 03:45:19 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 246 seconds)
2024-06-30 03:47:48 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650)
2024-06-30 03:51:22 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-06-30 03:57:13 +0200rosco(~rosco@175.136.155.137)
2024-06-30 04:05:04 +0200op_4(~tslil@user/op-4/x-9116473) (Remote host closed the connection)
2024-06-30 04:05:35 +0200op_4(~tslil@user/op-4/x-9116473)
2024-06-30 04:08:25 +0200nadja(~dequbed@banana-new.kilobyte22.de) (Ping timeout: 246 seconds)
2024-06-30 04:09:19 +0200nadja(~dequbed@banana-new.kilobyte22.de)
2024-06-30 04:10:56 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2024-06-30 04:11:33 +0200dyniec(~dyniec@dybiec.info) (Quit: WeeChat 4.2.2)
2024-06-30 04:12:55 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 268 seconds)
2024-06-30 04:14:47 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-06-30 04:17:43 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 04:28:23 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:77d8:7bd:e37b:39ff)
2024-06-30 04:32:55 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 272 seconds)
2024-06-30 04:33:29 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net)
2024-06-30 04:37:42 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Client Quit)
2024-06-30 04:38:03 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net)
2024-06-30 04:42:30 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Client Quit)
2024-06-30 04:42:45 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net)
2024-06-30 04:44:23 +0200td_(~td@i5387091C.versanet.de) (Ping timeout: 264 seconds)
2024-06-30 04:45:50 +0200td_(~td@i5387093F.versanet.de)
2024-06-30 04:54:55 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Quit: leaving)
2024-06-30 04:55:53 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net)
2024-06-30 04:57:23 +0200bilegeek(~bilegeek@2600:1008:b057:7524:18e9:1f68:5cd:444a)
2024-06-30 04:59:01 +0200 <nhar> hello world!
2024-06-30 04:59:36 +0200 <nhar> is this the right place to ask questions?
2024-06-30 05:03:40 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 05:04:49 +0200 <mauke> well, one of them
2024-06-30 05:05:00 +0200 <mauke> (hopefully they're haskell related)
2024-06-30 05:05:45 +0200 <nhar> oh good! My setup works! (first time IRC user...wasn't sure my Nix setup worked).
2024-06-30 05:05:53 +0200 <nhar> I do have a Haskell question though:
2024-06-30 05:06:25 +0200 <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)
2024-06-30 05:07:30 +0200 <mauke> that looks wrong, even without the typo
2024-06-30 05:08:02 +0200 <nhar> How so? I'm not trying to write an instance for `traverse` if that's what you mean
2024-06-30 05:08:21 +0200 <mauke> where does that m come from?
2024-06-30 05:08:40 +0200 <nhar> that's a typo, it should be f
2024-06-30 05:08:54 +0200 <mauke> ah
2024-06-30 05:09:14 +0200 <nhar> essientially I'm looking for something that optimizes: join <$> traverse f x
2024-06-30 05:11:53 +0200 <joeyadams> :t \f x -> join <$> traverse f x
2024-06-30 05:11:54 +0200 <lambdabot> (Monad m, Traversable m, Applicative f) => (a1 -> f (m a2)) -> m a1 -> f (m a2)
2024-06-30 05:14:29 +0200 <joeyadams> :t concatMap
2024-06-30 05:14:30 +0200 <lambdabot> Foldable t => (a -> [b]) -> t a -> [b]
2024-06-30 05:19:22 +0200 <joeyadams> So are you asking if there's a generalized concatMap that isn't specialized to returning a list?
2024-06-30 05:20:54 +0200 <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"
2024-06-30 05:21:21 +0200 <nhar> traverse (f :: a -> m (t b)) x :: m (t (t b))
2024-06-30 05:21:49 +0200 <nhar> and so join <$> traverse f x :: m (t b)
2024-06-30 05:22:03 +0200madhavanmiui(~madhavanm@2409:40f4:1030:9d51:8000::)
2024-06-30 05:22:13 +0200 <nhar> the `join <$>` part has to crawl through t again just to perform the join
2024-06-30 05:27:44 +0200robertm(robertm@lattice.rojoma.com) (Quit: WeeChat 3.8)
2024-06-30 05:30:19 +0200robertm(robertm@lattice.rojoma.com)
2024-06-30 05:34:02 +0200 <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]
2024-06-30 05:34:47 +0200 <nhar> good idea
2024-06-30 05:35:37 +0200madhavanmiui(~madhavanm@2409:40f4:1030:9d51:8000::) (Quit: Quit)
2024-06-30 05:35:45 +0200 <Leary> nhar: Perhaps you can use `Monoid (t b)` rather than `Monad t`?
2024-06-30 05:35:51 +0200 <Leary> :t \f -> getAp . foldMap (Ap . f)
2024-06-30 05:35:52 +0200 <lambdabot> forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1
2024-06-30 05:39:31 +0200 <nhar> that kind of works..however: instance (Applicative f, Monoid a1) => Monoid (Ap f a1)
2024-06-30 05:39:54 +0200 <nhar> that would require a Monoid instance for `b` in my signature for traverseJoin
2024-06-30 05:41:25 +0200 <Leary> Not if `Monoid (t b)` is satisfied regardless of `b`.
2024-06-30 05:42:39 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
2024-06-30 05:43:14 +0200 <Leary> The other option is Alternative.
2024-06-30 05:43:17 +0200 <Leary> :t \f -> getAp . fmap getAlt . foldMap (Ap . fmap Alt . f)
2024-06-30 05:43:18 +0200 <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)
2024-06-30 05:43:50 +0200 <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
2024-06-30 05:44:18 +0200 <nhar> data Exp a = Var a | Lam VarName (Exp a) | App (Exp a) (Exp a)
2024-06-30 05:44:39 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2024-06-30 05:46:27 +0200 <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
2024-06-30 05:49:43 +0200 <Leary> If you really want to optimise `join <$> traverse f x` for that, you're probably best off just writing it by hand.
2024-06-30 05:51:15 +0200 <nhar> yeah...I think you're right. And if I need to make a new typeclass. Thanks for the help!
2024-06-30 05:57:23 +0200 <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)
2024-06-30 06:05:19 +0200 <mauke> (MonadTrans f, Monad t) => t a -> (a -> f t b) -> f t b
2024-06-30 06:12:35 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-06-30 06:13:09 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-06-30 06:15:17 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2024-06-30 06:23:19 +0200aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2024-06-30 06:23:44 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 06:25:04 +0200 <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.
2024-06-30 06:25:41 +0200foul_owl(~kerry@185.219.141.162) (Ping timeout: 240 seconds)
2024-06-30 06:29:57 +0200lol_(~lol@2603:3016:1e01:b940:c519:e2d2:dade:6025)
2024-06-30 06:30:59 +0200DreamDeckup(~DreamDeck@bras-base-lprrpq1404w-grc-06-184-145-181-233.dsl.bell.ca)
2024-06-30 06:32:01 +0200zzz(~yin@user/zero) (Ping timeout: 256 seconds)
2024-06-30 06:33:59 +0200 <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?
2024-06-30 06:34:03 +0200jcarpenter2(~lol@2603:3016:1e01:b940:c8a1:76:d03d:bf70) (Ping timeout: 255 seconds)
2024-06-30 06:36:36 +0200 <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.
2024-06-30 06:38:08 +0200DreamDeckup(~DreamDeck@bras-base-lprrpq1404w-grc-06-184-145-181-233.dsl.bell.ca) (Ping timeout: 252 seconds)
2024-06-30 06:38:28 +0200DreamDeckup(~DreamDeck@194.127.199.29)
2024-06-30 06:38:29 +0200zzz(~yin@user/zero)
2024-06-30 06:40:48 +0200 <nhar> Leary: Thanks! I'll look into those! Not sure how to keep up with what's outdated etc...
2024-06-30 06:50:35 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 256 seconds)
2024-06-30 06:53:57 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-06-30 06:57:05 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 07:05:30 +0200nhar(~noah@c-73-237-54-185.hsd1.ga.comcast.net) (Quit: leaving)
2024-06-30 07:34:50 +0200DreamDeckup(~DreamDeck@194.127.199.29) (Remote host closed the connection)
2024-06-30 07:46:27 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-06-30 07:50:42 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-06-30 07:51:17 +0200rvalue(~rvalue@user/rvalue)
2024-06-30 07:57:17 +0200pavonia(~user@user/siracusa)
2024-06-30 08:17:17 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 240 seconds)
2024-06-30 08:22:24 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 08:23:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 08:39:50 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-06-30 08:40:14 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-06-30 08:45:08 +0200euphores(~SASL_euph@user/euphores)
2024-06-30 08:54:24 +0200misterfish(~misterfis@84.53.85.146)
2024-06-30 09:00:09 +0200tt12310978(~tt1231@syn-075-185-104-199.res.spectrum.com) (Quit: The Lounge - https://thelounge.chat)
2024-06-30 09:00:40 +0200bilegeek(~bilegeek@2600:1008:b057:7524:18e9:1f68:5cd:444a) (Quit: Leaving)
2024-06-30 09:00:48 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2024-06-30 09:00:48 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-06-30 09:00:48 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-06-30 09:00:48 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-06-30 09:00:48 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2024-06-30 09:00:48 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2024-06-30 09:01:12 +0200califax(~califax@user/califx)
2024-06-30 09:01:21 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-06-30 09:01:22 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2024-06-30 09:01:32 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2024-06-30 09:01:39 +0200chiselfuse(~chiselfus@user/chiselfuse)
2024-06-30 09:01:52 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2024-06-30 09:03:13 +0200tt123109783(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee)
2024-06-30 09:07:40 +0200rosco(~rosco@175.136.155.137) (Quit: Lost terminal)
2024-06-30 09:10:54 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:77d8:7bd:e37b:39ff) (Quit: Leaving)
2024-06-30 09:16:42 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
2024-06-30 09:17:05 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-06-30 09:18:20 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-06-30 09:23:04 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 246 seconds)
2024-06-30 09:25:16 +0200rosco(~rosco@175.136.155.137)
2024-06-30 09:36:40 +0200sprout(~quassel@2a02-a448-3a80-0-d123-5da7-9ae5-44be.fixed6.kpn.net) (Ping timeout: 268 seconds)
2024-06-30 09:37:21 +0200sprout(~quassel@2a02-a448-3a80-0-6981-debe-91f4-8f74.fixed6.kpn.net)
2024-06-30 09:37:36 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 268 seconds)
2024-06-30 09:39:48 +0200acidjnk_new3(~acidjnk@p200300d6e72cfb4649ca0157bfe844d2.dip0.t-ipconnect.de)
2024-06-30 09:52:11 +0200misterfish(~misterfis@046044172198.static.ipv4.heldenvannu.net)
2024-06-30 09:52:38 +0200madhavanmiui(~madhavanm@152.58.253.222)
2024-06-30 09:53:07 +0200madhavanmiui(~madhavanm@152.58.253.222) (Client Quit)
2024-06-30 09:55:34 +0200reuben(~reuben@183.82.114.12)
2024-06-30 09:57:02 +0200reuben(~reuben@183.82.114.12) ()
2024-06-30 09:59:54 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2024-06-30 10:00:04 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2024-06-30 10:02:40 +0200reuben(~reuben@user/greuben)
2024-06-30 10:03:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-06-30 10:05:17 +0200aforemny(~aforemny@2001:9e8:6cdc:700:7c5a:7635:6125:375c)
2024-06-30 10:06:54 +0200reuben(~reuben@user/greuben) (Quit: Konversation terminated!)
2024-06-30 10:11:50 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com)
2024-06-30 10:16:35 +0200gmg(~user@user/gehmehgeh)
2024-06-30 10:25:09 +0200aaronv(~aaronv@user/aaronv) (Remote host closed the connection)
2024-06-30 10:25:29 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 10:38:16 +0200target_i(~target_i@user/target-i/x-6023099)
2024-06-30 10:39:16 +0200euleritian(~euleritia@dynamic-176-001-133-228.176.1.pool.telefonica.de) (Ping timeout: 268 seconds)
2024-06-30 10:40:29 +0200euleritian(~euleritia@dynamic-176-002-083-211.176.2.pool.telefonica.de)
2024-06-30 10:44:49 +0200defanor_(~defanor@tart.uberspace.net)
2024-06-30 10:46:11 +0200mikess(~mikess@user/mikess) (Ping timeout: 264 seconds)
2024-06-30 10:52:12 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-06-30 10:54:14 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 10:54:14 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 10:54:14 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 11:02:28 +0200TactfulCitrus(~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047)
2024-06-30 11:13:08 +0200zzz(~yin@user/zero) (Ping timeout: 252 seconds)
2024-06-30 11:20:06 +0200zzz(~yin@user/zero)
2024-06-30 11:25:58 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-06-30 11:25:59 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-06-30 11:29:32 +0200lxsameer(~lxsameer@Serene/lxsameer)
2024-06-30 11:34:30 +0200emm(~emm@user/edmeme)
2024-06-30 11:41:18 +0200sawilagar(~sawilagar@user/sawilagar)
2024-06-30 11:46:21 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650)
2024-06-30 11:48:01 +0200simendsjo(~user@84.209.170.3)
2024-06-30 11:49:23 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 11:50:58 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-06-30 11:51:15 +0200misterfish(~misterfis@046044172198.static.ipv4.heldenvannu.net) (Ping timeout: 264 seconds)
2024-06-30 11:56:39 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 268 seconds)
2024-06-30 12:16:47 +0200misterfish(~misterfis@046044172198.static.ipv4.heldenvannu.net)
2024-06-30 12:19:18 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 256 seconds)
2024-06-30 12:22:15 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 268 seconds)
2024-06-30 12:23:21 +0200zzz(~yin@user/zero) (Ping timeout: 256 seconds)
2024-06-30 12:23:21 +0200connrs(~connrs@user/connrs) (Read error: Connection reset by peer)
2024-06-30 12:24:33 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 12:24:33 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 12:24:33 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 12:24:47 +0200__monty__(~toonn@user/toonn)
2024-06-30 12:30:14 +0200zzz(~yin@user/zero)
2024-06-30 12:30:18 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650)
2024-06-30 12:37:21 +0200dcoutts(~duncan@2a02:8012:ae9a:0:9a7e:1cf5:7c51:c650) (Ping timeout: 268 seconds)
2024-06-30 12:40:54 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-d54a-56ea-534f-abcf.rev.sfr.net)
2024-06-30 12:40:59 +0200connrs(~connrs@user/connrs)
2024-06-30 12:44:55 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-d54a-56ea-534f-abcf.rev.sfr.net) (Remote host closed the connection)
2024-06-30 12:45:09 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net)
2024-06-30 12:45:15 +0200euleritian(~euleritia@dynamic-176-002-083-211.176.2.pool.telefonica.de) (Ping timeout: 264 seconds)
2024-06-30 12:46:12 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 255 seconds)
2024-06-30 12:47:18 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 12:47:18 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 12:47:18 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 12:50:37 +0200euleritian(~euleritia@77.22.252.56)
2024-06-30 13:00:25 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 246 seconds)
2024-06-30 13:02:36 +0200mrmr15533434(~mrmr@user/mrmr) (Quit: Bye, See ya later!)
2024-06-30 13:11:23 +0200misterfish(~misterfis@046044172198.static.ipv4.heldenvannu.net) (Ping timeout: 252 seconds)
2024-06-30 13:16:11 +0200 <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?
2024-06-30 13:22:09 +0200mrmr155334346(~mrmr@user/mrmr)
2024-06-30 13:26:20 +0200 <haskellbridge> <sm> ghc user guide maybe ?
2024-06-30 13:28:16 +0200misterfish(~misterfis@87.215.131.102)
2024-06-30 13:31:02 +0200 <xerox> yeah just stumbled upon that one, excellent
2024-06-30 13:32:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-06-30 13:33:22 +0200oo_miguel(~Thunderbi@78.10.207.46)
2024-06-30 13:35:21 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 13:35:21 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 13:35:21 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 13:45:40 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net) (Remote host closed the connection)
2024-06-30 13:46:01 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net)
2024-06-30 13:49:12 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 268 seconds)
2024-06-30 13:56:01 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 14:05:10 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 246 seconds)
2024-06-30 14:21:38 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-edb2-6673-65b4-fdc7.rev.sfr.net) (Remote host closed the connection)
2024-06-30 14:25:33 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 14:37:12 +0200misterfish(~misterfis@87.215.131.102)
2024-06-30 14:47:31 +0200euleritian(~euleritia@77.22.252.56) (Ping timeout: 246 seconds)
2024-06-30 14:48:22 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-06-30 14:51:11 +0200puke(~puke@user/puke) (Remote host closed the connection)
2024-06-30 14:51:26 +0200puke(~puke@user/puke)
2024-06-30 14:58:05 +0200simendsjo(~user@84.209.170.3) (Ping timeout: 252 seconds)
2024-06-30 14:58:11 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-c4fd-5ebf-ca0b-e80d.rev.sfr.net)
2024-06-30 15:01:17 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 240 seconds)
2024-06-30 15:09:47 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-06-30 15:13:01 +0200ystael(~ystael@user/ystael)
2024-06-30 15:14:04 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-c4fd-5ebf-ca0b-e80d.rev.sfr.net) (Remote host closed the connection)
2024-06-30 15:30:01 +0200ystael(~ystael@user/ystael) (Ping timeout: 268 seconds)
2024-06-30 15:32:04 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 15:37:11 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 264 seconds)
2024-06-30 16:12:26 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 16:12:26 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 16:12:26 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 16:15:41 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-06-30 16:16:15 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-06-30 16:16:49 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 256 seconds)
2024-06-30 16:19:47 +0200Teacup_(~teacup@user/teacup) ()
2024-06-30 16:20:05 +0200Teacup(~teacup@user/teacup)
2024-06-30 16:28:36 +0200greuben(~reuben@user/greuben)
2024-06-30 16:31:23 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 16:31:23 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 16:31:23 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 16:36:29 +0200greuben(~reuben@user/greuben) (Quit: Konversation terminated!)
2024-06-30 16:46:14 +0200phma(~phma@2001:5b0:215d:ae38:bf89:58e8:737e:e16c) (Read error: Connection reset by peer)
2024-06-30 16:47:07 +0200phma(phma@2001:5b0:210b:8948:1a5:8d32:9eb9:6e63)
2024-06-30 16:48:02 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 268 seconds)
2024-06-30 17:02:52 +0200caryfitz(~caryfitz@2600:1700:e72:9000::47) (Remote host closed the connection)
2024-06-30 17:03:16 +0200caryfitz(~caryfitz@2600:1700:e72:9000::47)
2024-06-30 17:16:02 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 17:21:01 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 268 seconds)
2024-06-30 17:49:57 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-06-30 17:51:56 +0200soverysour(~soverysou@81.196.150.219)
2024-06-30 17:51:56 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-06-30 17:51:56 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 17:57:06 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 268 seconds)
2024-06-30 18:00:04 +0200srk-(~sorki@user/srk)
2024-06-30 18:00:26 +0200srk(~sorki@user/srk) (Ping timeout: 256 seconds)
2024-06-30 18:02:55 +0200srk-srk
2024-06-30 18:09:50 +0200oo_miguel(~Thunderbi@78.10.207.46) (Quit: oo_miguel)
2024-06-30 18:16:22 +0200soverysour(~soverysou@user/soverysour)
2024-06-30 18:16:45 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-06-30 18:20:15 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds)
2024-06-30 18:20:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 18:20:57 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2024-06-30 18:21:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2024-06-30 18:22:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 18:23:28 +0200koz(~koz@121.99.240.58) (Quit: ZNC 1.8.2 - https://znc.in)
2024-06-30 18:24:45 +0200koz(~koz@121.99.240.58)
2024-06-30 18:26:09 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-06-30 18:27:41 +0200Lawrence1erkheim(~LBerkheim@user/LawrenceBerkheim)
2024-06-30 18:27:44 +0200 <Lawrence1erkheim> hello
2024-06-30 18:29:37 +0200 <Rembane> Hi Lawrence1erkheim !
2024-06-30 18:31:28 +0200 <Lawrence1erkheim> I had a dummy moment with a question, but then I googled it and figured it out haha
2024-06-30 18:31:44 +0200 <Lawrence1erkheim> my bad
2024-06-30 18:32:02 +0200 <geekosaur> rubber duck debugging at its finest
2024-06-30 18:32:33 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2024-06-30 18:33:05 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-06-30 18:33:08 +0200 <Rembane> Lawrence1erkheim: No worries, you just won the internet!
2024-06-30 18:34:05 +0200 <Rembane> Lawrence1erkheim: Mildly relevant: https://xkcd.com/979/
2024-06-30 18:34:42 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-06-30 18:35:11 +0200rvalue(~rvalue@user/rvalue)
2024-06-30 18:36:43 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:af11:237f:c1e1:d41b)
2024-06-30 18:41:53 +0200Sgeo(~Sgeo@user/sgeo)
2024-06-30 18:43:24 +0200 <Lawrence1erkheim> Uhm ok I'd love some advice on learning materials
2024-06-30 18:43:39 +0200 <Lawrence1erkheim> Basically I learned haskell aaaaages ago when I did my bsc
2024-06-30 18:43:57 +0200 <Lawrence1erkheim> Now I'm trying to refresh my knowledge because I'll assist a professor at the uni
2024-06-30 18:44:13 +0200 <Lawrence1erkheim> I opened up learnyouahaskell.com, and started going through that
2024-06-30 18:44:24 +0200 <Lawrence1erkheim> But I just figured out that I'm mostly familiar with the concepts
2024-06-30 18:45:29 +0200 <Lawrence1erkheim> However, when I opened up the last year's exercises, I found stuff like `Module bla bla bla`, `import`, etc.
2024-06-30 18:45:33 +0200mikess(~mikess@user/mikess)
2024-06-30 18:45:47 +0200 <Lawrence1erkheim> Which is different from the stuff that I just read which is basically functional programming concepts
2024-06-30 18:45:56 +0200 <Lawrence1erkheim> Can you suggest any resources?
2024-06-30 18:46:07 +0200 <Lawrence1erkheim> I'm not sure what to google because I don't know what that more engineering type of programming is called here
2024-06-30 18:47:21 +0200 <Rembane> Lawrence1erkheim: Real World Haskell is ancient by now, but might be worth giving a skim.
2024-06-30 18:47:53 +0200 <Rembane> Isn't there a list of resources in lambdabot or something? I can't remember the word to invoke them with though.
2024-06-30 18:48:27 +0200 <Lawrence1erkheim> thank you o7
2024-06-30 18:49:05 +0200 <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
2024-06-30 18:49:11 +0200 <haskellbridge> <sm> @ where and also https://haskell-links.org
2024-06-30 18:49:49 +0200 <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
2024-06-30 18:49:55 +0200 <Rembane> @where
2024-06-30 18:49:55 +0200 <lambdabot> @where <key>, return element associated with key
2024-06-30 18:50:01 +0200 <Rembane> lambdabot: @where
2024-06-30 18:50:02 +0200 <lambdabot> @where <key>, return element associated with key
2024-06-30 18:50:09 +0200 <Rembane> lambdabot: where
2024-06-30 18:52:23 +0200 <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.
2024-06-30 18:54:28 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-06-30 18:54:33 +0200 <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.
2024-06-30 18:56:28 +0200 <mreh> Lawrence1erkheim: do you mind saying which uni?
2024-06-30 18:57:56 +0200 <Lawrence1erkheim> mreh: I'd rather not, the internet is a spooky place.
2024-06-30 18:58:56 +0200dyniec(~dyniec@dybiec.info)
2024-06-30 19:07:30 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-06-30 19:10:44 +0200 <mreh> I was looking at RWH the other day, it's still very relevant I would say. And free.
2024-06-30 19:11:09 +0200 <mreh> https://book.realworldhaskell.org/read/
2024-06-30 19:11:33 +0200 <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.
2024-06-30 19:11:57 +0200 <mreh> depends on his syllabus too
2024-06-30 19:12:17 +0200 <Rembane> Indeed. This is where it gets tricky. :)
2024-06-30 19:13:03 +0200 <mreh> YouTube is super good these days
2024-06-30 19:13:09 +0200 <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.
2024-06-30 19:13:45 +0200 <dolio> The concrete stuff asked about above just seems to be how to write programs with multiple files, or using libraries.
2024-06-30 19:14:06 +0200dcoutts(~duncan@212.187.183.33)
2024-06-30 19:14:22 +0200 <mreh> did someone mention RWH??
2024-06-30 19:14:37 +0200 <dolio> Yeah.
2024-06-30 19:14:43 +0200 <mreh> sorry ignore that
2024-06-30 19:14:57 +0200 <mreh> Lawrence1erkheim: honestly I would just do the exercises and ask in here if you get stuck
2024-06-30 19:15:28 +0200 <geekosaur> I'd look at CIS194 and/or the wikibook
2024-06-30 19:15:32 +0200 <geekosaur> @where cis194
2024-06-30 19:15:32 +0200 <lambdabot> <https://github.com/byorgey/haskell-course>,<https://www.seas.upenn.edu/~cis194/spring13/lectures.html>
2024-06-30 19:15:38 +0200 <geekosaur> @where wikibook
2024-06-30 19:15:38 +0200 <lambdabot> http://en.wikibooks.org/wiki/Haskell
2024-06-30 19:15:57 +0200 <geekosaur> byorgey keeps the first one up to date, the community keeps the second up to date
2024-06-30 19:16:07 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-06-30 19:16:14 +0200 <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.)
2024-06-30 19:16:54 +0200 <Lawrence1erkheim> Very nice
2024-06-30 19:16:57 +0200 <monochrom> In the university setting, RWH is likely tangential. I mean, it is not called AWH for a reason. >:)
2024-06-30 19:16:58 +0200 <Lawrence1erkheim> Thanks yall
2024-06-30 19:17:17 +0200 <monochrom> or RUH haha
2024-06-30 19:18:05 +0200 <monochrom> https://soupi.github.io/rfc/reading_simple_haskell/ can get you started quickly if you just need to read.
2024-06-30 19:18:33 +0200 <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.
2024-06-30 19:19:13 +0200 <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
2024-06-30 19:19:18 +0200 <monochrom> (Well, I learned both Chinese and English by "just read/listen" and then "just stochastic parrot". Don't underestimate the power of that.)
2024-06-30 19:19:43 +0200 <Rembane> Stochastic parrot is one of my favourite birds!
2024-06-30 19:19:52 +0200 <dolio> Well, I was thinking about, 'I already know FP principles.' But it also doesn't provide the missing information.
2024-06-30 19:19:52 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-06-30 19:19:53 +0200dcoutts(~duncan@212.187.183.33) (Ping timeout: 252 seconds)
2024-06-30 19:20:13 +0200 <dolio> Also it's too old for any build tools to exist.
2024-06-30 19:20:29 +0200 <dolio> Which I assume are being used.
2024-06-30 19:20:48 +0200 <geekosaur> it even predates `ghc --make`!
2024-06-30 19:20:59 +0200 <dolio> Hahaha. Yeah.
2024-06-30 19:21:00 +0200 <geekosaur> muchless that becoming the default
2024-06-30 19:21:04 +0200 <Lawrence1erkheim> omg based it explains what the `::` notation means
2024-06-30 19:22:05 +0200 <Rembane> Lawrence1erkheim: I need to see that explanation! Where did you find it?
2024-06-30 19:23:25 +0200 <Lawrence1erkheim> I'm just going through https://soupi.github.io/rfc/reading_simple_haskell/ that was suggested
2024-06-30 19:23:55 +0200 <Lawrence1erkheim> Now looking at what `data` means. I found some lesson `.hs` files, and at lesson 2 they started dropping the `data` blablabla
2024-06-30 19:24:22 +0200simendsjo(~user@84.209.170.3)
2024-06-30 19:24:30 +0200 <mreh> > data Basedness = Based | Debased
2024-06-30 19:24:32 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘data’
2024-06-30 19:24:42 +0200 <mreh> damn, I gotta brush up
2024-06-30 19:24:54 +0200 <Lawrence1erkheim> I find the `Integer -> Integer -> Integer` very strange though
2024-06-30 19:25:15 +0200 <Lawrence1erkheim> I assume it denotes a function that takes two integers and returns one
2024-06-30 19:25:21 +0200 <monochrom> It means `Integer -> (Integer -> Integer)` if you know what I mean.
2024-06-30 19:25:22 +0200 <mreh> functions in haskell are curried
2024-06-30 19:25:42 +0200 <mreh> s/curried/Curried/
2024-06-30 19:25:46 +0200 <Lawrence1erkheim> mmmm
2024-06-30 19:26:13 +0200 <mreh> :t curry
2024-06-30 19:26:14 +0200 <lambdabot> ((a, b) -> c) -> a -> b -> c
2024-06-30 19:28:21 +0200 <Rembane> Lawrence1erkheim: Does slide 22 make you wiser or more confused wrt functions?
2024-06-30 19:29:33 +0200 <mreh> :t (.)
2024-06-30 19:29:35 +0200 <lambdabot> (b -> c) -> (a -> b) -> a -> c
2024-06-30 19:30:54 +0200 <mreh> I guess the is author is grouping the types according to how they're parsed
2024-06-30 19:31:11 +0200 <mreh> -> is a type constructor
2024-06-30 19:31:26 +0200 <monochrom> Yes sometimes I add redundant parens when teaching.
2024-06-30 19:31:30 +0200 <mreh> :k (->)
2024-06-30 19:31:31 +0200 <lambdabot> * -> * -> *
2024-06-30 19:32:01 +0200 <mreh> that's its kind signature, it takes two types and becomes a third
2024-06-30 19:32:13 +0200 <monochrom> When I teach >>= I am like "foo >>= (\x -> bar >>= (\y -> ...". (I will comment "those parens are optional".)
2024-06-30 19:32:42 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
2024-06-30 19:32:54 +0200mrehis available for Haskell tutoring
2024-06-30 19:33:06 +0200 <mreh> monochrom: do you do private tutoring?
2024-06-30 19:33:31 +0200 <monochrom> No unless referral from a friend.
2024-06-30 19:34:29 +0200 <mreh> I'm just trying to monetize my addiction
2024-06-30 19:34:32 +0200 <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.
2024-06-30 19:35:08 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex)
2024-06-30 19:35:21 +0200 <monochrom> OK my situation is just because I have already got teaching contracts at uni, so I don't need more monetization.
2024-06-30 19:35:38 +0200 <Rembane> monochrom: Which one of (>>=) and (>=>) is easiest to teach?
2024-06-30 19:35:52 +0200 <monochrom> Plus, no one ever asked me for Haskell tutoring. It's always boring stuff like discrete math and NP-completeness....
2024-06-30 19:36:29 +0200 <monochrom> I don't know. I stick to >>= because it is more pragmatic and idiomatic.
2024-06-30 19:36:52 +0200pavonia(~user@user/siracusa)
2024-06-30 19:37:18 +0200 <Rembane> monochrom: Got it! What makes it more idiomatic?
2024-06-30 19:38:08 +0200 <monochrom> Just frequency in code people write.
2024-06-30 19:40:48 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2024-06-30 19:40:53 +0200dcoutts(~duncan@ip-185-104-136-57.ptr.icomera.net)
2024-06-30 19:41:55 +0200 <monochrom> But I think I can describe why it's more pragmatic.
2024-06-30 19:42:15 +0200 <Rembane> Sweet!
2024-06-30 19:42:27 +0200nhar(~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net)
2024-06-30 19:43:00 +0200 <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.
2024-06-30 19:44:38 +0200 <Rembane> That's true, there's a quite straightforward mechanical translation between them that can be done in the head too!
2024-06-30 19:44:46 +0200 <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.
2024-06-30 19:45:13 +0200 <monochrom> And you know it's true because why else the Arrow people went out of their way to invent do-proc notation.
2024-06-30 19:45:59 +0200 <ncf> tuples?
2024-06-30 19:46:02 +0200 <Rembane> I don't think you have to interact with tuples, let me see...
2024-06-30 19:46:03 +0200 <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.
2024-06-30 19:46:06 +0200 <Rembane> :t (>=>)
2024-06-30 19:46:07 +0200 <lambdabot> Monad m => (a -> m b) -> (b -> m c) -> a -> m c
2024-06-30 19:46:12 +0200 <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
2024-06-30 19:46:14 +0200 <Rembane> Nah, it's composition
2024-06-30 19:46:17 +0200 <Rembane> Monad composition
2024-06-30 19:46:26 +0200 <ncf> the (>=>)/(>>=) debate should be entirely analogous to the (.)/($) debate
2024-06-30 19:46:40 +0200 <Rembane> ncf: Yes! Just add monads!
2024-06-30 19:46:43 +0200 <geekosaur> right, but you more often use pure computations in monadic contexts than you compose monadic operations
2024-06-30 19:46:52 +0200 <geekosaur> (the former being (>>=)
2024-06-30 19:46:55 +0200 <geekosaur> )
2024-06-30 19:47:17 +0200 <Rembane> It's sadly quite hard to mix (<&>) and (>=>)
2024-06-30 19:47:33 +0200 <mreh> :t (<&>)
2024-06-30 19:47:35 +0200 <lambdabot> Functor f => f a -> (a -> b) -> f b
2024-06-30 19:47:44 +0200 <probie> I'd say it's closer to `(.)`/`(&)`
2024-06-30 19:47:58 +0200 <probie> :t (>>=)
2024-06-30 19:48:00 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2024-06-30 19:48:01 +0200 <probie> :t (&)
2024-06-30 19:48:02 +0200 <lambdabot> a -> (a -> b) -> b
2024-06-30 19:48:06 +0200 <probie> :t (=<<)
2024-06-30 19:48:07 +0200 <lambdabot> Monad m => (a -> m b) -> m a -> m b
2024-06-30 19:48:09 +0200 <probie> :t ($)
2024-06-30 19:48:10 +0200 <lambdabot> (a -> b) -> a -> b
2024-06-30 19:53:16 +0200 <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.
2024-06-30 19:53:33 +0200 <Lawrence1erkheim> Oh my lord computerphile are so goated
2024-06-30 19:53:41 +0200 <Lawrence1erkheim> I get currying now
2024-06-30 19:53:46 +0200 <Lawrence1erkheim> Wait no, let me fix that
2024-06-30 19:53:51 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 19:53:51 +0200 <Lawrence1erkheim> I think I get currying now*
2024-06-30 19:57:36 +0200 <mreh> Is there an equivalent to a Map at the type level?
2024-06-30 19:58:53 +0200 <nhar> mreh: i found this: https://hackage.haskell.org/package/type-level-sets-0.7
2024-06-30 19:58:57 +0200dcoutts(~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 256 seconds)
2024-06-30 19:59:45 +0200 <mreh> google is your friend
2024-06-30 19:59:49 +0200 <mreh> nhar: thx
2024-06-30 20:00:07 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 260 seconds)
2024-06-30 20:00:36 +0200 <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
2024-06-30 20:00:43 +0200 <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
2024-06-30 20:00:54 +0200 <mreh> nhar: I'm working on that
2024-06-30 20:01:21 +0200 <mreh> Thinking With Types is a pretty nice book.
2024-06-30 20:02:15 +0200 <nhar> > I'm generating GLSL...
2024-06-30 20:02:17 +0200 <lambdabot> <hint>:1:23: error:
2024-06-30 20:02:17 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2024-06-30 20:02:23 +0200 <nhar> I'm not sure that that is...
2024-06-30 20:02:33 +0200 <nhar> what is GLSL?
2024-06-30 20:02:52 +0200 <mreh> OpenGL Shading Language
2024-06-30 20:02:54 +0200 <nhar> And I thought it was a great read! Super duper helpful
2024-06-30 20:03:01 +0200 <Rembane> > -- Markdown block quotes doesn't really work here. :)
2024-06-30 20:03:02 +0200 <lambdabot> <no location info>: error:
2024-06-30 20:03:02 +0200 <lambdabot> not an expression: ‘-- Markdown block quotes doesn't really work here. :)’
2024-06-30 20:03:05 +0200 <Rembane> :D
2024-06-30 20:03:06 +0200 <mreh> nhar: has it been helpful?
2024-06-30 20:03:23 +0200 <nhar> Rembane: thnkx! I'm new to IRC and have no clue what I'm doing xD
2024-06-30 20:03:25 +0200 <mreh> I'm hoping I can actually tackle the stuff I want to do with types
2024-06-30 20:04:39 +0200 <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...
2024-06-30 20:04:54 +0200 <Rembane> mreh: No worries! We're all here to learn. :D
2024-06-30 20:05:11 +0200 <mreh> nhar: ^
2024-06-30 20:05:33 +0200 <nhar> has anyone ever heard of co-contextual type systems? https://www.informatik.uni-marburg.de/~seba/publications/cocontextual-type-checking.pdf
2024-06-30 20:05:43 +0200 <nhar> Rembane: thanks!
2024-06-30 20:06:16 +0200 <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...
2024-06-30 20:06:18 +0200leah2(~leah@vuxu.org) (Ping timeout: 255 seconds)
2024-06-30 20:06:21 +0200 <monochrom> Ugh type-level GLSL haha
2024-06-30 20:07:42 +0200 <mreh> it's only inputs to the pipeline that I'm going to record at the type level
2024-06-30 20:08:58 +0200 <mreh> I might make something a bit more abstract for writing the shader code
2024-06-30 20:09:28 +0200 <monochrom> I have not heard of the name "co-contextual", but Pierce's TaPL definitely presents type inference that way.
2024-06-30 20:10:15 +0200 <nhar> mreh: is GLSL a strongly typed language?
2024-06-30 20:10:16 +0200 <monochrom> Err maybe not, I am not reading carefully.
2024-06-30 20:11:11 +0200 <mreh> nhar: well, there are implicit casts, but the types are enforced by the compiler
2024-06-30 20:11:27 +0200 <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
2024-06-30 20:11:51 +0200 <mreh> so it's strong but not static
2024-06-30 20:12:35 +0200 <nhar> mreh: oh fun...so you're leveraging the HS type sytem to make sure you're generating GLSL type-correct code?
2024-06-30 20:13:30 +0200 <mreh> nhar: not quite, mainly taking out all the boilerplate of buffering data and then sprinkling some types on top
2024-06-30 20:15:26 +0200 <monochrom> Chapter 22 "type reconstruction" is type inference.
2024-06-30 20:15:48 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2024-06-30 20:16:27 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2024-06-30 20:16:29 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 240 seconds)
2024-06-30 20:17:31 +0200 <nhar> mreh: nice! Well, good luck!
2024-06-30 20:18:19 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-06-30 20:18:38 +0200 <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
2024-06-30 20:18:45 +0200Lord_of_Life_Lord_of_Life
2024-06-30 20:18:57 +0200 <monochrom> Does not.
2024-06-30 20:19:01 +0200leah2(~leah@vuxu.org)
2024-06-30 20:19:33 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 268 seconds)
2024-06-30 20:19:50 +0200 <nhar> monochrom: ooo! Ok, I'll have a look. Most of the material on hidnley-milner is a bit obtuse.
2024-06-30 20:19:53 +0200 <nhar> Thanks!
2024-06-30 20:20:46 +0200 <monochrom> I wrote https://www.cs.utoronto.ca/~trebla/CSCC24-2024-Summer/11-type-inference.html for my course.
2024-06-30 20:21:33 +0200Sgeo(~Sgeo@user/sgeo)
2024-06-30 20:24:03 +0200 <nhar> monochrom: thanks so much! i'll take a look. My goal is to implement the algorithms using recursion-schemes
2024-06-30 20:25:14 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-06-30 20:25:19 +0200nhar(~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net) (Changing host)
2024-06-30 20:25:19 +0200nhar(~noah@user/nhar)
2024-06-30 20:27:14 +0200aaronv(~aaronv@user/aaronv)
2024-06-30 20:30:51 +0200cheater_(~Username@user/cheater)
2024-06-30 20:33:35 +0200cheater(~Username@user/cheater) (Ping timeout: 264 seconds)
2024-06-30 20:33:37 +0200cheater_cheater
2024-06-30 20:37:28 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2024-06-30 20:38:03 +0200Maxdaman1us(~Maxdamant@user/maxdamantus)
2024-06-30 20:39:35 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 264 seconds)
2024-06-30 20:40:36 +0200TheCoffeMaker_(~TheCoffeM@200.114.213.75)
2024-06-30 20:41:26 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds)
2024-06-30 20:42:06 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-06-30 20:43:54 +0200nhar(~noah@user/nhar) (Ping timeout: 268 seconds)
2024-06-30 20:46:22 +0200mikess(~mikess@user/mikess) (Ping timeout: 268 seconds)
2024-06-30 20:46:41 +0200nhar(~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net)
2024-06-30 20:47:16 +0200nhar(~noah@99-112-0-41.lightspeed.tukrga.sbcglobal.net) (Changing host)
2024-06-30 20:47:16 +0200nhar(~noah@user/nhar)
2024-06-30 20:49:19 +0200 <nhar> monochrom: this is super helpful and well written. Thanks again
2024-06-30 20:55:17 +0200 <Lawrence1erkheim> revisiting haskel after a masters is so good
2024-06-30 20:55:33 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2024-06-30 20:56:14 +0200TheCoffeMaker_(~TheCoffeM@200.114.213.75) (Ping timeout: 268 seconds)
2024-06-30 20:58:53 +0200TheCoffeMaker_(~TheCoffeM@200.114.213.75)
2024-06-30 21:00:15 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 264 seconds)
2024-06-30 21:03:46 +0200 <nhar> Lawrence1erkheim: how so?
2024-06-30 21:05:24 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-06-30 21:05:51 +0200KingTrent(~KingTrent@111.92.44.73)
2024-06-30 21:06:39 +0200KingTrent(~KingTrent@111.92.44.73) (Leaving)
2024-06-30 21:15:20 +0200TheCoffeMaker_(~TheCoffeM@200.114.213.75) (Quit: So long and thanks for all the fish)
2024-06-30 21:19:17 +0200simendsjo(~user@84.209.170.3) (Ping timeout: 272 seconds)
2024-06-30 21:24:38 +0200Joao[3](~Joao003@190.108.99.178)
2024-06-30 21:26:58 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com)
2024-06-30 21:29:22 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 260 seconds)
2024-06-30 21:29:38 +0200gmg(~user@user/gehmehgeh)
2024-06-30 21:30:26 +0200rosco(~rosco@175.136.155.137) (Quit: Lost terminal)
2024-06-30 21:37:46 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:af11:237f:c1e1:d41b) (Quit: Leaving)
2024-06-30 21:37:47 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-06-30 21:42:51 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-b470-a88f-97cf-942e.rev.sfr.net)
2024-06-30 21:46:11 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 264 seconds)
2024-06-30 21:49:45 +0200nhar(~noah@user/nhar) (Quit: leaving)
2024-06-30 21:50:59 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-45-67-70-24-166.dsl.bell.ca) (Ping timeout: 264 seconds)
2024-06-30 21:52:47 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-45-67-70-24-166.dsl.bell.ca)
2024-06-30 22:00:30 +0200Lawrence1erkheim(~LBerkheim@user/LawrenceBerkheim) (Quit: leaving)
2024-06-30 22:02:40 +0200phma(phma@2001:5b0:210b:8948:1a5:8d32:9eb9:6e63) (Read error: Connection reset by peer)
2024-06-30 22:03:09 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-06-30 22:03:26 +0200phma(~phma@2001:5b0:210f:618:1292:6c24:64e4:74a)
2024-06-30 22:06:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-06-30 22:08:55 +0200Joao[3](~Joao003@190.108.99.178) (Quit: Bye!)
2024-06-30 22:42:54 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 255 seconds)
2024-06-30 22:57:39 +0200dcoutts(~duncan@ip-185-104-136-57.ptr.icomera.net)
2024-06-30 23:02:04 +0200dcoutts_(~duncan@ip-185-104-136-57.ptr.icomera.net)
2024-06-30 23:02:42 +0200dcoutts(~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 255 seconds)