Newest at the top
2024-11-13 21:37:55 +0100 | <mauke> | unless you put IORefs in your record or something |
2024-11-13 21:37:45 +0100 | <mauke> | sure, except Reader doesn't really let you modify the state |
2024-11-13 21:34:16 +0100 | mestre | (~mestre@192.145.217.7) (Client Quit) |
2024-11-13 21:32:55 +0100 | mestre | (~mestre@192.145.217.7) |
2024-11-13 21:32:52 +0100 | CrunchyFlakes | (~CrunchyFl@31.19.233.78) (Ping timeout: 244 seconds) |
2024-11-13 21:32:49 +0100 | CrunchyFlakes_ | (~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 +0100 | peterbecich | (~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 +0100 | CoolMa7 | (~CoolMa7@ip5f5b8957.dynamic.kabel-deutschland.de) CoolMa7 |
2024-11-13 21:12:15 +0100 | sprotte24 | (~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 +0100 | alexherbo2 | (~alexherbo@2a02-8440-3117-f07c-987b-fc29-77ee-addd.rev.sfr.net) (Ping timeout: 256 seconds) |
2024-11-13 21:04:30 +0100 | mari-estel | (~mari-este@user/mari-estel) (Quit: good night) |
2024-11-13 21:00:44 +0100 | caconym | (~caconym@user/caconym) caconym |
2024-11-13 21:00:05 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-11-13 20:59:18 +0100 | ljdarj | (~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 +0100 | ljdarj | (~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 +0100 | machinedgod | (~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 +0100 | mantraofpie | (~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 +0100 | hellwolf | (~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 +0100 | mantraofpie_ | (~mantraofp@user/mantraofpie) mantraofpie |