2024/11/13

Newest at the top

2024-11-13 21:34:16 +0100mestre(~mestre@192.145.217.7) (Client Quit)
2024-11-13 21:32:55 +0100mestre(~mestre@192.145.217.7)
2024-11-13 21:32:52 +0100CrunchyFlakes(~CrunchyFl@31.19.233.78) (Ping timeout: 244 seconds)
2024-11-13 21:32:49 +0100CrunchyFlakes_(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-11-13 21:27:55 +0100 <lxsameer> I have a `Conext` type that basically is the state of my program, I pass it almost everywhere. At the moment it's just a record. Some functions will return a new context. Does it make sense to do something like `newtype Context a = Context (ReaderT State .... a) deriving (Monad, MonadReader, ....)`?
2024-11-13 21:25:23 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 245 seconds)
2024-11-13 21:16:00 +0100 <lxsameer> tomsmeding: thank you
2024-11-13 21:14:18 +0100 <tomsmeding> :p
2024-11-13 21:14:16 +0100 <tomsmeding> lxsameer: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/functional_dependencies.html#extens…
2024-11-13 21:12:58 +0100CoolMa7(~CoolMa7@ip5f5b8957.dynamic.kabel-deutschland.de) CoolMa7
2024-11-13 21:12:15 +0100sprotte24(~sprotte24@p200300d16f059400e8d39b8ffa006815.dip0.t-ipconnect.de)
2024-11-13 21:10:20 +0100 <dmj`> haskell report, "Modules may be mutually recursive."
2024-11-13 21:08:43 +0100 <lxsameer> cheers
2024-11-13 21:08:42 +0100 <yin> it's a language extension
2024-11-13 21:08:26 +0100 <yin> functional dependencies
2024-11-13 21:07:45 +0100alexherbo2(~alexherbo@2a02-8440-3117-f07c-987b-fc29-77ee-addd.rev.sfr.net) (Ping timeout: 256 seconds)
2024-11-13 21:04:30 +0100mari-estel(~mari-este@user/mari-estel) (Quit: good night)
2024-11-13 21:00:44 +0100caconym(~caconym@user/caconym) caconym
2024-11-13 21:00:05 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-11-13 20:59:18 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-11-13 20:59:15 +0100 <lxsameer> tomsmeding: since I don't know the name of this concept, i don't know what to search in the manual
2024-11-13 20:58:14 +0100 <tomsmeding> but read the manual
2024-11-13 20:58:11 +0100 <tomsmeding> the `|` is more like the `|` in a list comprehension, and the `->` is a bit like implication here
2024-11-13 20:58:09 +0100 <lxsameer> ah got it, thanks folks
2024-11-13 20:57:58 +0100 <tomsmeding> lxsameer: yes :)
2024-11-13 20:57:56 +0100 <geekosaur> not as "or"
2024-11-13 20:57:52 +0100 <geekosaur> in general a single vertical bar in Haskell is read as "where" or "such that"
2024-11-13 20:57:41 +0100 <lxsameer> tomsmeding: was that `no` for me?
2024-11-13 20:57:12 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2024-11-13 20:56:53 +0100 <tomsmeding> https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/functional_dependencies.html#extens…
2024-11-13 20:56:46 +0100 <tomsmeding> -XFunctionalDependencies
2024-11-13 20:56:42 +0100 <tomsmeding> no
2024-11-13 20:56:33 +0100 <lxsameer> in the following syntax `class Monad m => MonadReader r m | m -> r where` that pipe reads as MonadReader on r m OR m -> r, correct?
2024-11-13 20:56:23 +0100 <tomsmeding> vector tries a bit too hard to be generic with a bunch of stuff
2024-11-13 20:56:13 +0100 <tomsmeding> reading the source here is not likely to be very enlightening :D
2024-11-13 20:55:56 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-11-13 20:55:36 +0100 <haskellbridge> <thirdofmay18081814goya> ok i will spend a while reading these and their source, highly appreciate the comments tyvm
2024-11-13 20:54:26 +0100 <tomsmeding> `containers` also does (Data.Map etc.)
2024-11-13 20:54:13 +0100 <tomsmeding> yes
2024-11-13 20:54:09 +0100 <haskellbridge> <thirdofmay18081814goya> oh wow ok the package annotates each function's time complexity
2024-11-13 20:54:03 +0100 <tomsmeding> as long as you're just reading into an existing immutable vector, almost anything sensible is fast
2024-11-13 20:53:46 +0100 <tomsmeding> Data.Vector has GHC rewrite rules (RULEs) that try to make creating vectors fast even if you use multiple functions after each other (e.g. cons, append, fromList), but for best results, try to create the whole thing in one go
2024-11-13 20:53:46 +0100mantraofpie(~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds)
2024-11-13 20:52:52 +0100 <tomsmeding> cons creates a new vector
2024-11-13 20:52:51 +0100hellwolf(~user@0e2f-3a3b-aecf-adb3-0f00-4d40-07d0-2001.sta.estpak.ee) hellwolf
2024-11-13 20:52:47 +0100 <tomsmeding> tail and init are read-only
2024-11-13 20:52:36 +0100 <haskellbridge> <thirdofmay18081814goya> wait sorry I'm not fully understanding, what distinguishes tail/init vs. tail/cons?
2024-11-13 20:52:31 +0100mantraofpie_(~mantraofp@user/mantraofpie) mantraofpie
2024-11-13 20:51:18 +0100 <tomsmeding> (so tail/init etc. are actually quite fine, they are O(1) and just produce views on the underlying data)
2024-11-13 20:50:19 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)