Logs on 2022-11-04 (liberachat/#haskell)
| 00:00:00 | × | Tuplanolla quits (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:00:03 | × | dcoutts quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (*.net *.split) |
| 00:00:03 | × | gentauro quits (~gentauro@user/gentauro) (*.net *.split) |
| 00:00:03 | × | redmp quits (~redmp@mobile-166-170-43-0.mycingular.net) (*.net *.split) |
| 00:00:04 | × | jlgw_ quits (~jw@83-233-104-81.cust.bredband2.com) (*.net *.split) |
| 00:00:04 | × | ystael quits (~ystael@user/ystael) (*.net *.split) |
| 00:00:18 | → | ystael joins (~ystael@user/ystael) |
| 00:00:24 | × | dcoutts_ quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
| 00:00:27 | → | jlgw_ joins (~jw@83-233-104-81.cust.bredband2.com) |
| 00:00:27 | → | dcoutts joins (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
| 00:03:34 | → | dcoutts_ joins (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
| 00:05:15 | → | gentauro joins (~gentauro@user/gentauro) |
| 00:05:18 | → | caryhartline joins (~caryhartl@107-140-218-181.lightspeed.rcsntx.sbcglobal.net) |
| 00:05:18 | → | redmp joins (~redmp@mobile-166-170-43-0.mycingular.net) |
| 00:05:21 | × | dcoutts quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
| 00:07:58 | → | aliosablack joins (~chomwitt@2a02:587:7a0a:6300:1ac0:4dff:fedb:a3f1) |
| 00:09:21 | × | chomwitt quits (~chomwitt@2a02:587:dc18:4a00:1ac0:4dff:fedb:a3f1) (Ping timeout: 246 seconds) |
| 00:12:03 | → | king_gs1 joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) |
| 00:12:04 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 00:12:06 | × | king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer) |
| 00:12:06 | king_gs1 | is now known as king_gs |
| 00:13:13 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 00:13:25 | × | redmp quits (~redmp@mobile-166-170-43-0.mycingular.net) (Quit: leaving) |
| 00:13:35 | × | dcoutts_ quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Remote host closed the connection) |
| 00:13:35 | → | pavonia joins (~user@user/siracusa) |
| 00:13:54 | → | dcoutts_ joins (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
| 00:18:32 | × | aliosablack quits (~chomwitt@2a02:587:7a0a:6300:1ac0:4dff:fedb:a3f1) (Ping timeout: 276 seconds) |
| 00:21:30 | → | SoF4 joins (~skius@user/skius) |
| 00:22:01 | × | SoF quits (~skius@user/skius) (Read error: Connection reset by peer) |
| 00:22:01 | SoF4 | is now known as SoF |
| 00:24:26 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 00:28:57 | × | king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 246 seconds) |
| 00:30:04 | × | dcoutts_ quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Remote host closed the connection) |
| 00:30:24 | → | dcoutts_ joins (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
| 00:30:31 | → | abhiroop joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 00:30:34 | × | ncf quits (~n@monade.li) (Quit: Fairfarren.) |
| 00:30:47 | → | ncf joins (~n@monade.li) |
| 00:31:16 | × | abhiroop_ quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
| 00:39:08 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:39:18 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 00:40:29 | → | absence joins (torgeihe@hildring.pvv.ntnu.no) |
| 00:41:17 | → | king_gs joins (~Thunderbi@187.201.83.115) |
| 00:44:28 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 00:46:27 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 00:46:30 | × | SoF quits (~skius@user/skius) (Remote host closed the connection) |
| 00:46:59 | → | SoF joins (~skius@user/skius) |
| 00:49:10 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 00:49:44 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 00:55:57 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 00:59:17 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 01:00:26 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
| 01:00:26 | × | king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer) |
| 01:01:30 | → | ub joins (~Thunderbi@77.119.197.59.wireless.dyn.drei.com) |
| 01:02:54 | × | ubert quits (~Thunderbi@77.119.196.32.wireless.dyn.drei.com) (Ping timeout: 246 seconds) |
| 01:02:54 | ub | is now known as ubert |
| 01:03:37 | → | king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) |
| 01:03:44 | → | talismanick joins (~talismani@2601:200:c100:c9e0::1b0b) |
| 01:04:55 | × | mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection) |
| 01:06:08 | → | mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001) |
| 01:06:09 | <talismanick> | Say I have `f <$> foo <*> bar <|> g <$> foo <*> bar`, where `foo` and `bar` are quite long. How might I deduplicate with `liftM2 (<|>) f g`? |
| 01:08:27 | <dsal> | Making them not quite long is always a good idea. |
| 01:09:16 | <c_wraith> | I wouldn't use the function instance for liftM2 there. It just makes people work harder to see what's going on |
| 01:10:36 | × | bgamari_ quits (~bgamari@64.223.168.223) (Ping timeout: 255 seconds) |
| 01:10:36 | <pyrex> | fwiw i think i would probably write liftA2 f foo bar <|> liftA2 g foo bar |
| 01:10:44 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 01:10:52 | → | bgamari joins (~bgamari@68.238.49.149) |
| 01:10:54 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:39 | <c_wraith> | if foo and bar are complex expressions, put them in a let or where |
| 01:11:48 | <pyrex> | i might write `let go z = liftA2 z foo bar in go f <|> go g` |
| 01:12:15 | <talismanick> | pyrex: yeah, a let binding could clear things up |
| 01:13:23 | <talismanick> | Or, I could make it even more extensible by fmap'ing `<$>foo <*> bar` over a list of functions, then foldr1 (<|>) |
| 01:13:26 | <pyrex> | fwiw i think `on (<|>) (\x -> liftA2 x foo bar) f g` maybe does what you want, but i haven't checked that |
| 01:15:12 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
| 01:15:32 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds) |
| 01:16:23 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 01:17:01 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:20:05 | → | razetime joins (~quassel@117.254.35.246) |
| 01:20:24 | × | caryhartline quits (~caryhartl@107-140-218-181.lightspeed.rcsntx.sbcglobal.net) (Quit: caryhartline) |
| 01:21:32 | <talismanick> | It works. Muahahaha |
| 01:23:02 | → | abhiroop_ joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 01:23:11 | × | abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 272 seconds) |
| 01:24:41 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 01:24:49 | <[Leary]> | Or something like this: asum $ [f, g] <&> \h -> h <$> foo <*> bar |
| 01:29:30 | × | xff0x quits (~xff0x@2405:6580:b080:900:aa5a:50b3:fed5:3fc2) (Ping timeout: 255 seconds) |
| 01:30:25 | → | nate3 joins (~nate@98.45.169.16) |
| 01:34:01 | <SrPx> | HVM history and next steps: https://twitter.com/VictorTaelin/status/1588332432587005952 |
| 01:36:26 | × | nineonine quits (~nineonine@2604:3d08:7780:cd00:a9d4:e2db:2f89:8800) (Remote host closed the connection) |
| 01:40:21 | → | ub joins (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) |
| 01:41:44 | × | ubert quits (~Thunderbi@77.119.197.59.wireless.dyn.drei.com) (Ping timeout: 276 seconds) |
| 01:41:45 | ub | is now known as ubert |
| 01:46:59 | <talismanick> | [Leary]: Oh, that is better than what I wrote |
| 01:47:08 | <talismanick> | learn something new everyday! |
| 01:48:47 | × | jargon_ quits (~jargon@174-22-194-21.phnx.qwest.net) (Remote host closed the connection) |
| 01:57:25 | <byorgey> | SrPx: cool stuff |
| 01:57:43 | <SrPx> | byorgey: ty (: |
| 02:01:14 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
| 02:03:00 | × | inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 248 seconds) |
| 02:10:15 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:13:32 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:13:32 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:13:32 | finn_elija | is now known as FinnElija |
| 02:14:00 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 02:15:32 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 02:15:33 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 02:23:12 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 02:27:00 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds) |
| 02:27:36 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
| 02:28:32 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
| 02:34:07 | × | nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 02:38:19 | → | c209e6dc-4d76-47 joins (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
| 02:38:54 | → | olivermead joins (~olivermea@cpc72329-sotn15-2-0-cust205.15-1.cable.virginm.net) |
| 02:39:12 | <c209e6dc-4d76-47> | ghci complains if I have a polymorphic lambda inside a let binding, do I have to enable FlexibleContext or RankNTypes? |
| 02:39:29 | <olivermead> | what's the complaint? |
| 02:39:53 | → | jargon joins (~jargon@174-22-194-21.phnx.qwest.net) |
| 02:41:41 | <sm> | some debug tracing/logging helpers I've been updating.. comments/testing welcome |
| 02:41:42 | <sm> | https://threadreaderapp.com/thread/1588358412730916864.html |
| 02:43:30 | <c_wraith> | c209e6dc-4d76-47: inside a let? do you have an extension enabled that implies MonoLocalBinds? |
| 02:46:55 | <c209e6dc-4d76-47> | I'm using stack ghc 8.6.5 which is complaining but cabal ghc 8.10.7 is fine, so I'm trying to bump the stack resolver and see if it is a problem with ghc version |
| 02:49:34 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 02:49:59 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 02:50:29 | × | ygsjg quits (~quassel@189.124.224.160) (Read error: Connection reset by peer) |
| 02:51:39 | → | abhiroop joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 02:51:51 | × | abhiroop_ quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 255 seconds) |
| 03:06:18 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 255 seconds) |
| 03:21:13 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds) |
| 03:24:06 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:24:06 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:24:06 | finn_elija | is now known as FinnElija |
| 03:24:21 | <ski> | talismanick : would you like to do the `<|>' before or after the `<$>' and `<*>' ? (in your snippet, it's `<|>' before) |
| 03:24:47 | × | td_ quits (~td@83.135.9.44) (Ping timeout: 272 seconds) |
| 03:24:54 | <ski> | `<|>' before : |
| 03:25:06 | <ski> | @type \f g foo bar -> (liftA2 . liftA2) (<|>) (liftA2 f) (liftA2 g) foo bar |
| 03:25:08 | <lambdabot> | Alternative f => (a1 -> b -> a2) -> (a1 -> b -> a2) -> f a1 -> f b -> f a2 |
| 03:25:17 | <ski> | @let asumMap :: (Foldable t,Alternative i) => (a -> i b) -> (t a -> i b); asumMap = (getAlt .) . foldMap . (Alt .) |
| 03:25:18 | <lambdabot> | Defined. |
| 03:25:34 | <ski> | @type \f g foo bar -> asumMap (\h -> liftA2 h foo bar) [f,g] |
| 03:25:35 | <lambdabot> | Alternative i => (a -> b1 -> b2) -> (a -> b1 -> b2) -> i a -> i b1 -> i b2 |
| 03:25:44 | <ski> | `mplus' after : |
| 03:25:50 | <ski> | @let infixr 9 .:; (.:) :: (c0 -> c1) -> (a -> b -> c0) -> (a -> b -> c1); (.:) = (.) . (.) |
| 03:25:51 | <lambdabot> | Defined. |
| 03:25:55 | → | td_ joins (~td@83.135.9.48) |
| 03:25:58 | <ski> | @let infixl 4 <*>>; (<*>>) :: Monad m => m (a -> m b) -> (m a -> m b); mamb <*>> ma = join (mamb <*> ma) |
| 03:25:59 | <lambdabot> | Defined. |
| 03:26:08 | <ski> | @type \f g foo bar -> (liftA2 . liftA2) mplus (pure .: f) (pure .: g) <$> foo <*>> bar |
| 03:26:09 | <lambdabot> | MonadPlus m => (a1 -> a2 -> b) -> (a1 -> a2 -> b) -> m a1 -> m a2 -> m b |
| 03:26:19 | <ski> | @let oneOfM :: (Foldable t,MonadPlus m) => t a -> m a; oneOfM = foldr (mplus . return) mzero |
| 03:26:20 | <lambdabot> | Defined. |
| 03:26:24 | <ski> | @type \f g foo bar -> ((.: sequence) . (.: sequence)) oneOfM [f,g] <$> foo <*>> bar |
| 03:26:25 | <lambdabot> | MonadPlus m => (b1 -> a -> b2) -> (b1 -> a -> b2) -> m b1 -> m a -> m b2 |
| 03:27:45 | <ski> | (and no, i'm not really suggesting you to use the more pointless forms .. that's mostly some gymnastics, while exploring the two alternatives) |
| 03:28:57 | <ski> | with the "before", you're first introducing a choice, then, in each branch, you perform `foo' and `bar' |
| 03:29:31 | <ski> | with the "after", you're first performing `foo' and `bar', then introduce branching (using `f' or `g') |
| 03:30:00 | <ski> | `Alternative' suffices for "before", while `MonadPlus' is needed for "after" |
| 03:30:50 | × | c209e6dc-4d76-47 quits (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!) |
| 03:33:37 | <ski> | (otoh, i think `<*>>' can often be a handy operator) |
| 03:34:12 | × | abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
| 03:35:56 | <sm> | phew, https://www.parsonsmatt.org/2022/10/29/spooky_masks_and_async_exceptions.html was a scary tale |
| 03:36:09 | <Axman6> | sm: `args = unsafePerformIO getArgs` is horrific... but I understand why it's been done that way; definitely saves a lot of plumbing for something which is essentially pure within the app |
| 03:36:34 | <sm> | just like an implicit Reader, right ? |
| 03:36:43 | <Axman6> | yeah |
| 03:37:29 | ski | . o O ( distribution, mobile code marshalling ) |
| 03:37:53 | <Axman6> | possibly consider making args = unsafePerformIO getArgs a top level definition (unexported) so it doesn't get rerun in each of the functions that call debugLevel |
| 03:38:09 | <sm> | good idea |
| 03:38:23 | <Axman6> | then I think you can get rid of all the NOINLINEs elsewhere |
| 03:38:56 | <sm> | I wasn't sure if those were needed, but I notice HLS warns me about them being missing now (sometimes) |
| 03:39:54 | <sm> | I don't know if OPTIONS_GHC -fno-cse is useful at all |
| 03:41:55 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 03:42:50 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 03:47:50 | → | zaquest joins (~notzaques@5.130.79.72) |
| 03:49:34 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 03:50:54 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 03:53:55 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
| 03:58:27 | × | razetime quits (~quassel@117.254.35.246) (Ping timeout: 255 seconds) |
| 04:02:49 | → | abhiroop joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 04:02:54 | sm | removes all pragmas HLS doesn't complain about |
| 04:03:44 | <sm> | hlint, actually |
| 04:04:24 | <ski> | .. keeping only those it complains about ? |
| 04:05:07 | <sm> | heh.. keeping the ones it wants me to keep |
| 04:06:35 | <ski> | which does it have an opinion about, here ? |
| 04:07:21 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 04:09:23 | <sm> | I just updated https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Print.hs and https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Print.hs showing the two it warns about (modifiedProgName and progArgs) |
| 04:09:43 | <sm> | s/Print/Debug/ |
| 04:12:04 | × | abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
| 04:12:08 | <ski> | `NOINLINE', ok |
| 04:14:55 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 04:15:31 | <sm> | I'm not sure why hlint doesn't complain about this unsafePerformIO user though: |
| 04:15:31 | <sm> | https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Debug.hs#L249 |
| 04:15:58 | <sm> | or this one: https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Utils/Print.hs#L123 |
| 04:17:26 | <sm> | ie, it doesn't require NOINLINE for those |
| 04:19:11 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:21:39 | × | king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Ping timeout: 268 seconds) |
| 04:25:56 | × | simpleauthority quits (~simpleaut@user/simpleauthority) (Quit: ZNC 1.8.2 - https://znc.in) |
| 04:26:58 | → | simpleauthority joins (~simpleaut@user/simpleauthority) |
| 04:33:56 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 04:34:03 | → | mbuf joins (~Shakthi@49.205.86.6) |
| 04:38:52 | → | inversed joins (~inversed@bcdcac82.skybroadband.com) |
| 04:46:01 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 04:50:17 | × | Vajb quits (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) (Read error: Connection reset by peer) |
| 04:50:39 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 04:52:55 | × | raym quits (~ray@user/raym) (Quit: coming back with FreeBSD 13.1-p3) |
| 05:07:32 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 05:13:17 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 240 seconds) |
| 05:17:07 | × | rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:19:18 | → | rembo10 joins (~rembo10@main.remulis.com) |
| 05:19:37 | → | raym joins (~ray@user/raym) |
| 05:20:20 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 05:21:51 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 05:22:28 | × | tolt quits (~weechat-h@li219-154.members.linode.com) (Ping timeout: 248 seconds) |
| 05:28:25 | → | dcoutts__ joins (~duncan@host81-156-211-164.range81-156.btcentralplus.com) |
| 05:29:27 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 05:31:27 | × | dcoutts_ quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 272 seconds) |
| 05:33:33 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:33:47 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds) |
| 05:33:53 | → | Vajb joins (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) |
| 05:36:13 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 05:40:26 | × | off^ quits (~off@76.145.185.103) (Remote host closed the connection) |
| 05:41:14 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 05:44:35 | → | dcoutts joins (~duncan@host86-144-78-132.range86-144.btcentralplus.com) |
| 05:46:39 | × | dcoutts__ quits (~duncan@host81-156-211-164.range81-156.btcentralplus.com) (Ping timeout: 272 seconds) |
| 05:46:55 | → | dcoutts_ joins (~duncan@host86-144-78-132.range86-144.btcentralplus.com) |
| 05:49:36 | × | dcoutts quits (~duncan@host86-144-78-132.range86-144.btcentralplus.com) (Ping timeout: 255 seconds) |
| 05:55:25 | → | dcoutts__ joins (~duncan@host86-144-78-132.range86-144.btcentralplus.com) |
| 05:58:09 | × | dcoutts_ quits (~duncan@host86-144-78-132.range86-144.btcentralplus.com) (Ping timeout: 255 seconds) |
| 05:58:25 | → | dcoutts joins (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
| 05:59:33 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Read error: Connection reset by peer) |
| 06:00:35 | × | dcoutts__ quits (~duncan@host86-144-78-132.range86-144.btcentralplus.com) (Ping timeout: 272 seconds) |
| 06:02:29 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 272 seconds) |
| 06:02:56 | × | _xor quits (~xor@74.215.182.83) (Read error: Connection reset by peer) |
| 06:03:07 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:05:35 | → | intelligent_boat joins (~intellibo@user/intelligent-boat/x-3514795) |
| 06:05:40 | × | arahael quits (~arahael@124.168.94.52) (Ping timeout: 248 seconds) |
| 06:06:20 | → | _xor joins (~xor@74.215.182.83) |
| 06:16:33 | → | arahael joins (~arahael@124.168.94.52) |
| 06:23:30 | → | chomwitt joins (~chomwitt@ppp-94-69-177-170.home.otenet.gr) |
| 06:24:56 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 06:26:13 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 06:31:01 | → | nate3 joins (~nate@98.45.169.16) |
| 06:31:48 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 248 seconds) |
| 06:35:57 | × | nate3 quits (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
| 06:59:00 | → | kenran joins (~user@user/kenran) |
| 06:59:44 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 07:04:05 | → | lucerne joins (~lucerne@5.113.247.76) |
| 07:14:41 | × | tgi quits (~thegeekin@189.180.115.115) (Ping timeout: 272 seconds) |
| 07:14:43 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 07:15:30 | → | jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
| 07:16:47 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 07:22:39 | × | manwithl- quits (~manwithlu@194.177.28.176) (Read error: Connection reset by peer) |
| 07:22:39 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:26:09 | → | manwithluck joins (~manwithlu@194.177.28.176) |
| 07:26:14 | <Axman6> | @hoogle stripPrefix |
| 07:26:15 | <lambdabot> | Data.List stripPrefix :: Eq a => [a] -> [a] -> Maybe [a] |
| 07:26:15 | <lambdabot> | GHC.OldList stripPrefix :: Eq a => [a] -> [a] -> Maybe [a] |
| 07:26:15 | <lambdabot> | Data.ByteString stripPrefix :: ByteString -> ByteString -> Maybe ByteString |
| 07:26:42 | <Axman6> | sm: this looks useful for the command line option parsing you're doing |
| 07:27:05 | <Axman6> | > Data.List.stripPrefix "--output=" "--output=hello" |
| 07:27:06 | <lambdabot> | Just "hello" |
| 07:27:32 | × | lucerne quits (~lucerne@5.113.247.76) (Remote host closed the connection) |
| 07:27:46 | ski | would like to be able to use that in a pattern synonym .. alas |
| 07:28:07 | <sm> | thanks! |
| 07:28:20 | × | jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 248 seconds) |
| 07:28:20 | → | acidjnk joins (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) |
| 07:28:29 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:29:04 | → | kuribas joins (~user@2a02:1810:2825:6000:f0b5:eba4:a391:e0d0) |
| 07:30:23 | <tomsmeding> | ski: why not? |
| 07:30:53 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 07:32:05 | <ski> | something like |
| 07:32:10 | <ski> | pattern (++) :: Eq a => [a] -> ([a] -> [a]) |
| 07:32:18 | <ski> | pattern xs ++ ys <- (stripPrefix xs -> Just ys) |
| 07:32:20 | <ski> | or even |
| 07:32:26 | <ski> | pattern [ ] ++ ys <- ys |
| 07:32:27 | <ski> | pattern (x:xs) ++ ys <- x : xs ++ ys |
| 07:32:35 | <ski> | (recursively defined pattern synonym) |
| 07:32:49 | <ski> | (rename `++' to something else, if you prefer) |
| 07:34:49 | <tomsmeding> | ski: https://paste.tomsmeding.com/ln3QSYG5 |
| 07:34:58 | <tomsmeding> | use as (Prefix @"prefix" s) |
| 07:35:10 | <ski> | tomsmeding : because pattern synonyms (as currently done .. unlike how functions in Mercury work, say), can only be applied to parameter patterns, not to parameter expressions. above, we define the pattern `xs ++ ys' for *expressions* `xs' and patterns `ys', in terms of pattern definentia (right-hand sides) (like `(stripPrefix xs -> Just ys)', or `ys', `x : xs ++ ys') |
| 07:35:28 | <tomsmeding> | yes, see paste :p |
| 07:35:50 | <ski> | hah, that's a cute trick :b |
| 07:36:10 | <tomsmeding> | don't use in code that other people need to understand lol |
| 07:36:20 | <ski> | in Mercury, one can declare |
| 07:36:32 | <ski> | :- func list(T) ++ list(T) = list(T). |
| 07:36:42 | <ski> | :- mode in ++ in = out is det. |
| 07:36:50 | <ski> | :- mode in ++ out = in is semidet. |
| 07:37:02 | <tomsmeding> | yeah prolog-likes cheat here |
| 07:37:10 | <ski> | [ ] ++ Ys = Ys . |
| 07:37:17 | × | acidjnk quits (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 07:37:34 | <ski> | [X|Xs] ++ Ys = [X|XsYs] :- XsYs = Xs ++ Ys. |
| 07:37:42 | <ski> | (or you can say just |
| 07:37:50 | <ski> | [X|Xs] ++ Ys = [X|Xs ++ Ys]. |
| 07:37:53 | <ski> | if you prefer) |
| 07:38:12 | <ski> | (read `:-' roughly like `where') |
| 07:38:23 | <ski> | (it specifically means "if") |
| 07:39:43 | <tomsmeding> | I've done minor messing around in prolog a while ago, I think I can read this |
| 07:40:01 | <tomsmeding> | semidet is "doesn't match in multiple ways but might not match at all"? |
| 07:40:01 | <ski> | (well, actually, the second case of `++' above should be something like |
| 07:40:14 | <ski> | pattern (x0:xs) ++ ys <- x1 : xs ++ ys | x0 == x1 |
| 07:40:15 | <ski> | ) |
| 07:40:22 | → | lucerne joins (~lucerne@5.113.247.76) |
| 07:41:14 | → | jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 07:41:42 | <ski> | "semidet" means "at most one solution". or, if you prefer, `forall [Xs,XsYs] unique [Ys] Xs ++ Ys = XsYs' (where `unique' means "exists at most one") |
| 07:41:50 | <ski> | (that |
| 07:42:16 | <tomsmeding> | right that's what I was trying to say :p |
| 07:43:13 | <ski> | 's the declarative interpretation of that mode (taking the `in's and `out's into account). the operational interpretation is that prior to the call, the `in' parameters are known/instantiated/uninitialized, while the `out' parameters are unknown/uninstantiated/uninitialized (and after the call, in case of success, both are instantiated/known)) |
| 07:44:49 | <ski> | ("det" means "exactly one solution", so `forall [Xs,Ys] exists_unique [XsYs] Xs ++ Ys = XsYs', which is the same as `forall [Xs,Ys] exists [XsYs0] forall [XsYs1] ( XsYs0 = XsYs1 <=> Xs ++ Ys = XsYs1 )') |
| 07:44:53 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 07:44:53 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 07:44:59 | → | califax_ joins (~califax@user/califx) |
| 07:45:15 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 255 seconds) |
| 07:45:17 | × | lucerne quits (~lucerne@5.113.247.76) (Read error: Connection reset by peer) |
| 07:45:46 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 07:46:15 | califax_ | is now known as califax |
| 07:47:18 | <ski> | (while `forall [Xs,XsYs] unique [Ys] Xs ++ Ys = XsYs' means `forall [Xs,Ys0,Ys1,XsYs] ( Xs ++ Ys0 = XsYs,Xs ++ Ys1 = XsYs => Ys0 = Ys1)' .. which in this case can be rewritten as `forall [Xs,Ys0,Ys1] ( ( exists [XsYs] Xs ++ Ys0 = XsYs,Xs ++ Ys1 = XsYs ) => Ys0 = Ys1)', iow `forall [Xs,Ys0,Ys1] ( Xs ++ Ys0 = Xs ++ Ys1 => Ys0 = Ys1)', which we recognize as injectivity in the right parameter) |
| 07:47:37 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 272 seconds) |
| 07:48:16 | <ski> | (functional dependencies for type classes (being predicates/relations over types) can be interpreted declaratively in a similar way .. although they're less powerful than the Mercury mode declarations) |
| 07:48:42 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:7800:8d62:667f:9e70) |
| 07:49:57 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 07:50:20 | → | mncheck joins (~mncheck@193.224.205.254) |
| 07:51:11 | <ski> | Prolog is pretty neat .. and Mercury is quite cool, too |
| 07:51:43 | → | lucerne joins (~lucerne@5.113.247.76) |
| 07:57:09 | × | ft quits (~ft@80.141.189.89) (Quit: leaving) |
| 07:58:03 | → | razetime joins (~quassel@117.254.35.246) |
| 08:02:20 | × | m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 252 seconds) |
| 08:03:18 | × | mbuf quits (~Shakthi@49.205.86.6) (Quit: Leaving) |
| 08:06:48 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 08:09:16 | → | odnes joins (~odnes@2a02:587:e907:c410::273) |
| 08:09:23 | × | odnes quits (~odnes@2a02:587:e907:c410::273) (Remote host closed the connection) |
| 08:10:28 | × | jargon quits (~jargon@174-22-194-21.phnx.qwest.net) (Ping timeout: 248 seconds) |
| 08:11:52 | → | chele joins (~chele@user/chele) |
| 08:14:02 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) |
| 08:14:11 | → | CiaoSen joins (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 08:14:39 | → | ubert1 joins (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) |
| 08:19:55 | → | Major_Biscuit joins (~MajorBisc@c-001-021-035.client.tudelft.eduvpn.nl) |
| 08:19:58 | → | jonathanx_ joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) |
| 08:21:04 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:21:06 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:21:35 | → | cyphase joins (~cyphase@user/cyphase) |
| 08:22:12 | × | jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 248 seconds) |
| 08:22:13 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 255 seconds) |
| 08:24:42 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 08:25:40 | → | cstml joins (~cstml@user/cstml) |
| 08:26:34 | × | AlexZenon quits (~alzenon@178.34.163.109) (Read error: Connection reset by peer) |
| 08:26:50 | → | AlexZenon joins (~alzenon@178.34.163.109) |
| 08:27:56 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:28:08 | <cstml> | Hi everyone, gentle reminder about the 2022 State of Haskell Survey. |
| 08:29:14 | <dminuoso> | Mmm, Im quite annoyed by the prevalence of `Int` across so many functions, when most of the time `Word` would be more suitable. |
| 08:29:37 | <dminuoso> | Every way I look at it, the numerics are for the most part extremely horribly done in Haskell. |
| 08:30:30 | <dminuoso> | On the one hand Haskell is frequently advertised as being "reliable" with a "strong and expressive type system", but at the same time we use `Int` in most places where a negative Integer will lead to crashes, corruption, be silently truncated, or do unexpected things.. |
| 08:30:37 | <dminuoso> | And when we do fromIntegral, we get silent truncation everywhere. |
| 08:30:54 | → | michalz joins (~michalz@185.246.207.218) |
| 08:30:57 | <dminuoso> | IEEE 754 calculations have no traps either, so that's another big issue. |
| 08:31:46 | <dminuoso> | It's almost as if the widespread use of `Int` is admitting that people would be fromIntegral'ing their way between numbers anyway, and that the truncating behavior might as well be moved into call sites instead. |
| 08:32:06 | AlexNoo__ | is now known as AlexNoo |
| 08:34:12 | <dminuoso> | I would argue that dealing with numeric values is more fun in C than it is in Haskell. :( |
| 08:34:43 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 08:35:07 | × | jludwig quits (~justin@li657-110.members.linode.com) (Ping timeout: 272 seconds) |
| 08:35:38 | <ski> | dminuoso : would you expect `Word' rather than `Int' for `length' ? |
| 08:35:59 | <ski> | (i assume you'd want it for `take',`drop',`splitAt', at least) |
| 08:36:22 | <dminuoso> | Sure, or `timeout`, `replicateM` |
| 08:36:25 | <ski> | yea, the downcoercions with `fromIntegral' aren't nice |
| 08:36:38 | ski | nods |
| 08:37:42 | <ski> | what about `Word' subtraction ? |
| 08:38:43 | <ski> | (should one even perhaps have different types for modulo-`2^n' versions of `Word', and ones that signal on underflow & overflow ?) |
| 08:38:46 | <dminuoso> | So Im fine with the overflow semantics in principle, though one could conceive a `withTraps :: a -> a` kind of primitives that will turn overflows into bottom. |
| 08:39:01 | <dminuoso> | (Or via separate types, yes) |
| 08:39:48 | <dminuoso> | Though on second thought, withTraps will be hard to impossible to implement nicely in a call-by-name setting |
| 08:39:55 | × | paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 08:40:14 | × | cstml quits (~cstml@user/cstml) (Quit: WeeChat 3.5) |
| 08:40:21 | <dminuoso> | But one could still conceive either separate methods from a different module (such that you could use `x Trap.- y`), or like you said with a different type |
| 08:40:25 | <tomsmeding> | yeah a separate type for with-traps computations would have clearer semantics |
| 08:40:28 | <tomsmeding> | or that |
| 08:40:36 | ski | . o O ( should we have a `Word'-torsor ? ) |
| 08:40:43 | <tomsmeding> | I feel like we should have an int-cast -like API instead of fromIntegral |
| 08:40:50 | <dminuoso> | tomsmeding: Absolutely agreed. |
| 08:40:58 | <dminuoso> | int-cast should be in base! :) |
| 08:41:10 | <tomsmeding> | I'm using it frighteningly rarely |
| 08:41:25 | <ski> | how would one do the coercions ? |
| 08:41:29 | <ski> | MPTCs ? |
| 08:41:44 | → | cstml joins (~cstml@user/cstml) |
| 08:41:44 | → | vpan joins (~0@212.117.1.172) |
| 08:41:50 | <ski> | (presumably one'd want to distinguish between upcoercions and downcoercions) |
| 08:41:56 | <tomsmeding> | ski: https://hackage.haskell.org/package/int-cast-0.2.0.0/docs/Data-IntCast.html |
| 08:43:59 | × | jonathanx_ quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection) |
| 08:45:44 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 08:49:14 | <ski> | why are some properties using ⌜≡⌝ while others use `==' ? |
| 08:50:18 | <tomsmeding> | ¯\_(ツ)_/¯ |
| 08:50:22 | <ski> | also, for `toInteger (intCastIso a) == toInteger b' (provided `toInteger a == toInteger b'), shouldn't `intCastIso a' here be required to have the same type as `b' ? |
| 08:50:42 | <ski> | (also, is `toInteger' not presumed to be injective ?) |
| 08:50:57 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 08:51:14 | <tomsmeding> | ski: why would that be required? |
| 08:51:51 | <ski> | (which ?) |
| 08:52:06 | <tomsmeding> | that intCastIso a should have the same type as b |
| 08:52:22 | <tomsmeding> | also toInteger doesn't exist lol |
| 08:52:43 | <ski> | @type toInteger |
| 08:52:44 | <lambdabot> | Integral a => a -> Integer |
| 08:52:50 | <tomsmeding> | o |
| 08:53:18 | <tomsmeding> | ah it's a type class method of course, hence 's' on hackage doesn't show it directly |
| 08:53:20 | <tomsmeding> | I was fooled |
| 08:58:05 | <ski> | well, say `a' has type `Int64', while `b' has type `Int' (on a `64'-bit platform, as they say the table assumes). then if we take `toInteger (intCastIso a :: Word64)', it would seem this will probably not compare equal to `toInteger b' (given `toInteger a' and `toInteger b' compare equal) |
| 08:58:59 | <ski> | (e.g. `a = (-1) :: Int64' and `b = (-1) :: Int'. then `intCastIso a :: Word64' is presumably `maxBound :: Word64', which would still be positive after `toInteger') |
| 09:00:03 | × | BB[m] quits (~cashmagem@2001:470:69fc:105::f6dc) (Quit: You have been kicked for being idle) |
| 09:00:03 | × | bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: You have been kicked for being idle) |
| 09:00:49 | → | merijn joins (~merijn@86.86.29.250) |
| 09:02:37 | <tomsmeding> | heh |
| 09:03:19 | <tomsmeding> | yeah that's a documentation bug |
| 09:03:54 | <ski> | (i would also expect `intCastIso' to be able to coerce from an integral type to itself ..) |
| 09:04:11 | <tomsmeding> | it can |
| 09:04:29 | <tomsmeding> | IsIntBaseTypeIso a a = 'True |
| 09:04:58 | <ski> | hm, ok. haven't gotten that far down yet |
| 09:05:07 | <ski> | (the table doesn't mention this) |
| 09:05:10 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:7800:8d62:667f:9e70) (Quit: WeeChat 2.8) |
| 09:05:33 | <tomsmeding> | but yeah that property is invalid |
| 09:05:49 | <tomsmeding> | the first one, that intCastIso is its own inverse, is valid though, I guess |
| 09:06:43 | <tomsmeding> | in fact that second listed property of intCastIso should be a property of intCastEq, it only holds if they really are the same representation with the same meaning |
| 09:06:52 | <tomsmeding> | (modulo newtype/data wrappers) |
| 09:07:19 | <tomsmeding> | well, no not same representation, but actually isomorphic in the sense of preserving all arithmetic operations |
| 09:07:50 | <ski> | presumably the latter property is meant to express that if you have two types which you can convert between, using `intCastIso', then given an element in the "overlap" (as measured by `toInteger' applied to both of them), then `intCastIso' maps one to the other (at least up to applying `toInteger' to both sides) |
| 09:08:36 | <tomsmeding> | hm, I guess that does hold, but it's not what the property says |
| 09:08:46 | <tomsmeding> | and it's hard to describe concisely |
| 09:08:53 | <ski> | it would say that, if it used a type ascription as i indicated |
| 09:09:53 | → | fserucas_ joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 09:09:53 | <tomsmeding> | where exactly? 'toInteger (intCastIso a :: alpha) == toInteger (b :: alpha) if toInteger a == toInteger b'? |
| 09:10:51 | <tomsmeding> | hm, right, that plus the first property would give it |
| 09:10:54 | <tomsmeding> | cool |
| 09:10:59 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 09:11:35 | <tomsmeding> | also int-cast needs a metadata update to build with ghc-9 |
| 09:11:50 | <tomsmeding> | which also shows it's underused |
| 09:12:06 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 09:12:38 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 09:14:19 | <ski> | ∀ α β (a ∷ α) (b ∷ β) . toInteger (intCastIso (a ∷ α) ∷ β) == (toInteger b ∷ β) = True ⇐ toInteger a == toInteger b = True ∧ Integral α ∧ Integral β ∧ IsIntTypeIso α β = 'True |
| 09:14:52 | <tomsmeding> | ski: toInteger (b ∷ β), not toInteger b ∷ β |
| 09:14:56 | <tomsmeding> | but yeah |
| 09:15:14 | <ski> | yea, sorry (meant to fix that, but forgot) |
| 09:15:20 | <tomsmeding> | or just toInteger b, given the ascription in the forall :p |
| 09:16:08 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
| 09:16:25 | <ski> | toInteger (intCastIso a ∷ β) == toInteger (b ∷ β) = True ⇐ toInteger a == toInteger b = True -- if you leave the quantification implicit, as well as the presuppositions |
| 09:17:30 | <tomsmeding> | likely the most readable form |
| 09:17:56 | → | arjun joins (~arjun@user/arjun) |
| 09:17:57 | <ski> | (if they had used ⌜≡⌝ here, i'd've skipped the `= True' parts) |
| 09:19:32 | × | talismanick quits (~talismani@2601:200:c100:c9e0::1b0b) (Ping timeout: 246 seconds) |
| 09:20:05 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 09:21:10 | ski | . o O ( "Torsors Made Easy" by John Baez in 2009-12-27 at <https://math.ucr.edu/home/baez/torsors.html> ) |
| 09:27:03 | × | Luj3 quits (~Luj@2a01:e0a:5f9:9681:1047:e6e7:4c5c:c3aa) (Quit: The Lounge - https://thelounge.chat) |
| 09:27:45 | → | Luj3 joins (~Luj@2a01:e0a:5f9:9681:82ee:b48:2fc3:8107) |
| 09:28:32 | <ski> | (if you have (absolute) points, then the corresponding torsors are (relative) differences/vectors between them. you can add differences/vectors/torsors to each other, but you can't add absolute points to each other. you can add relative vectors to absolute points, though. e.g. adding `NominalDiffTime' to `UTCTime') |
| 09:29:07 | <tomsmeding> | or simply points in 2D space |
| 09:29:26 | <tomsmeding> | (works in nD, but most intuitive for n >= 2) |
| 09:29:35 | <ski> | yes. affine space vs. linear/vector space |
| 09:30:58 | <tomsmeding> | ah this is actually an example on the page |
| 09:31:38 | <ski> | affine space has affine combination of points (weighted average, where weights add up to `1') |
| 09:31:44 | <tomsmeding> | ski: so what was your point, consider Int to be a torsor of Word? |
| 09:32:00 | <ski> | something like that, yea |
| 09:32:08 | <tomsmeding> | not sure that's super helpful |
| 09:32:32 | <ski> | (or maybe `Int65' for `Word64' ?) |
| 09:32:38 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 09:33:14 | ski | 'sn't sure, either |
| 09:34:33 | <ski> | hm, i guess you get boundscrossing anyway, in one direction, or the other, or both, with finite range |
| 09:36:58 | <ski> | i think one reason i've heard people (e.g. in C) suggest to use signed rather than unsigned, even if negative doesn't make sense for some quantity in the problem domain, is it allow intermittent intermediate negative results in computations .. and also avoiding problems with `x >= 0', when decrementing `x' in a loop |
| 09:38:18 | <ski> | s/is it/is to/ |
| 09:38:33 | <dminuoso> | ski: otoh signed overflow is undefined in most languages. |
| 09:38:46 | <dminuoso> | That easily offsets any perceived advantages |
| 09:38:51 | <ski> | yes |
| 09:39:25 | <merijn> | The problem with unsigned is that even in Haskell underflow is hard to detect properly |
| 09:39:57 | <dminuoso> | Well introducing additional primops for these operations that will bottom out is not difficult |
| 09:40:16 | <dminuoso> | (Yes, we still get into imprecise exception semantics, but its better than nothing) |
| 09:40:45 | <dminuoso> | The underlying CMM machinery is already in place |
| 09:41:14 | <dminuoso> | plusWord2# :: Word# -> Word# -> (# Word#, Word# #) |
| 09:41:37 | <dminuoso> | addWordC# :: Word# -> Word# -> (# Word#, Int# #) |
| 09:42:08 | <dminuoso> | So we have the necessary machinery |
| 09:43:24 | <merijn> | We have the technology! |
| 09:44:16 | × | arjun quits (~arjun@user/arjun) (Quit: Leaving) |
| 09:44:51 | <ski> | (one could do `i = count; do { i--; ..i.. } while (i > 0);' (or `i != 0') (possibly unsigned `i') rather than `i = count-1; while (i >= 0) { ..i.. i--; }' (signed `i'), though, assuming `count > 0') |
| 09:45:42 | <dminuoso> | At the very least we should have IEE754 traps. |
| 09:45:51 | <ski> | yes please |
| 09:46:49 | <ski> | (reminds me that `real' is (no longer) an `eqtype', in SML) |
| 09:47:47 | <dminuoso> | ski: However, its quite surprising how far people get with unlawful equality on IEEE754 numbers in JavaScript. I sometimes do wonder about the tradeoff of language elegancy and ergonomics. |
| 09:47:56 | <ski> | dminuoso : a whole word, instead of just a carry ? |
| 09:48:09 | → | thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
| 09:48:20 | <dminuoso> | ski: It's just an artifact of old design. There's ongoing work to turn these primops into sized word types. |
| 09:48:56 | <dminuoso> | Until <=9.0 even the sized primtypes (e.g. Word8#/Int8#) were just mapped to Word#/Int# |
| 09:49:27 | <dminuoso> | which is why it didnt make a difference - but this is currently changing. not sure whether these particular primops are on the scope of the folks reworking them |
| 09:49:48 | <ski> | multiplication and division as well ? |
| 09:50:12 | <dminuoso> | Yes |
| 09:50:25 | <dminuoso> | I mean we already have: timesWord16# :: Word16# -> Word16# -> Word16# and the likes |
| 09:50:38 | × | olivermead quits (~olivermea@cpc72329-sotn15-2-0-cust205.15-1.cable.virginm.net) (Remote host closed the connection) |
| 09:50:50 | <ski> | so not `Word32#' result |
| 09:51:19 | <dminuoso> | Right, and unlike older GHC versions, this will in CMM actually be mapped to such short registers |
| 09:51:45 | <ski> | (also (tangentially) i'd like to see `mod n 0 = n' and `rem n 0 = n') |
| 09:51:58 | <ski> | (well, at least for `mod') |
| 09:52:05 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 09:52:19 | <dminuoso> | Can you elaborate your reason for that? |
| 09:52:40 | <dminuoso> | Is mod 0 commonly defined in some fields of mathematics? |
| 09:54:18 | <ski> | `mod n d' and `rem n d' chooses a representative of an equivalence class (coset) in ⌜ℤ ∕ (d⋅ℤ)⌝ (given ⌜n,d : ℤ⌝) |
| 09:54:38 | → | jludwig joins (~justin@li657-110.members.linode.com) |
| 09:55:24 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:55:24 | → | acidjnk joins (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) |
| 09:55:26 | <dminuoso> | But isnt ℤ/0 ~= ℤ? |
| 09:55:56 | <dminuoso> | Picking `rem n 0 = n` seems quite arbitrary here, it could according to this also be `minBound` or `maxBound` easily |
| 09:55:59 | <dminuoso> | Or 0. |
| 09:56:49 | <ski> | if ⌜d = 0⌝, then ⌜ℤ ∕ (0⋅ℤ)⌝ is just ⌜ℤ⌝. ⌜a ≡ b (mod 0)⌝ simply means ⌜a = b⌝ (generally ⌜a ≡ b (mod d)⌝ means ⌜d ∣ a − b⌝, iow ⌜∃ k : ℤ . a = b + k⋅d⌝) |
| 09:57:08 | <ski> | dminuoso : it's the only sensible choice (apart from leaving it undefined) |
| 09:59:30 | <ski> | also, if you have ⌜0 ⋅ _ = 0⌝ (non-strict), then you even get ⌜d ⋅ div n d + mod n d = n⌝, also when ⌜d = 0⌝ |
| 10:01:24 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 248 seconds) |
| 10:02:01 | <ski> | if you have an element ⌜g⌝ (always invertible) in a group, and you look at the sequence ⌜⋯,g⁻²,g⁻¹,1,g,g²,g³,⋯⌝, then if this sequence is periodic, with period ⌜p⌝, we say that ⌜p⌝ is the order of the element ⌜g⌝ (how many times one have to multiply it by itself to get back to ⌜1⌝) |
| 10:02:50 | → | teo_ joins (~teo@user/teo) |
| 10:02:55 | <ski> | if the sequence never loops, then the correct period ⌜p⌝ to assign is ⌜0⌝ ! (people traditionally often say ⌜∞⌝, but i don't like this too much) |
| 10:02:57 | teo_ | is now known as teo |
| 10:04:31 | <ski> | the reason is that the correct ordering of periods to consider is the divisibility ordering ⌜∣⌝ (the multiplicative/geometric ordering), where ⌜0⌝ is the *greatest* element; rather than the usual (additive/arithmetic) ordering ⌜≤⌝ |
| 10:05:23 | → | __monty__ joins (~toonn@user/toonn) |
| 10:08:58 | <ski> | (the reason is that if ⌜m ∣ n⌝, then ⌜gᵐ = 1 ⇒ gⁿ = 1⌝ .. but that doesn't follow from ⌜m ≤ n⌝, in general. note that the claim that ⌜m⌝ is the order of ⌜g⌝ can be defined as ⌜∀ n. m ∣ n ⇔ gⁿ = 1⌝ .. which we read out aloud as "⌜m⌝ is the least ⌜n⌝ (in the divisibility order) such that ⌜gⁿ = 1⌝) |
| 10:10:23 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Remote host closed the connection) |
| 10:12:28 | <tomsmeding> | completely unrelated question: if you give cabal a too-new ghc with -w, it gives a "warning" and runs away. Can I convince cabal to just go on and try? |
| 10:13:12 | <dminuoso> | Whats the warning you get? |
| 10:13:23 | <ski> | (("universal") properties of the shape ⌜∀ y. x ≤ y ⇔ P y⌝ only make sense when ⌜P⌝ is a monotonic/increawsing/upper property, iow if ⌜x ≤ y⌝ and ⌜P x⌝, then ⌜P y⌝. so if ⌜P⌝ holds at a point, it also holds at all greater points. the property ⌜gⁿ = 1⌝ is monotonic/increasing in ⌜n⌝, only when the ordering we use is the divisibility ordering) |
| 10:13:38 | <tomsmeding> | dminuoso: "Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.6.2.0 supports 'ghc' version < 9.4): /path/to/ghc is version 9.5.20221103" |
| 10:14:01 | <dminuoso> | tomsmeding: its just a warning, no? |
| 10:14:09 | <tomsmeding> | that's what I thought |
| 10:14:13 | <dminuoso> | But? |
| 10:14:22 | <tomsmeding> | that's all it says, no more actions/output |
| 10:14:31 | <merijn> | It's not |
| 10:14:37 | <merijn> | cabal is not forward compatible |
| 10:14:44 | <dminuoso> | merijn: judging from the code, its just a warning. |
| 10:15:02 | <dminuoso> | So it may be that cabal silently crashes in a different place, but that particular diagnostic is not a fatal error. |
| 10:15:14 | <merijn> | I'm not saying the diagnostic is fatal |
| 10:15:18 | × | jludwig quits (~justin@li657-110.members.linode.com) (Quit: ZNC - https://znc.in) |
| 10:15:28 | <merijn> | I'm saying "cabal is not forward compatible, so you have zero guarantees of success" |
| 10:15:34 | <merijn> | hence, the warning |
| 10:15:55 | <dminuoso> | tomsmeding: What happens if you run with -v3? |
| 10:16:01 | <dminuoso> | Can you observe it proceeding with anything? |
| 10:16:22 | <tomsmeding> | secretly it's not me that's getting this, it's a friend of mine; I'll ask him :) |
| 10:18:23 | → | Guest75 joins (~Guest75@178.141.177.81) |
| 10:18:43 | <tomsmeding> | ah there _was_ more output: cabal subsequently complained about ghc-pkg which wasn't up to date with the custom too-new ghc |
| 10:19:01 | <tomsmeding> | telling him to fix the ghc install so that all tools get correctly installed before retrying :) |
| 10:22:32 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 10:26:16 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 10:27:15 | <dminuoso> | Okay so you're secretly playing proxy support while you yourself are being lied to! |
| 10:27:34 | <dminuoso> | That's a nice friend of yours. |
| 10:27:38 | <tomsmeding> | yes! |
| 10:27:38 | <dminuoso> | :p |
| 10:27:59 | <tomsmeding> | I mean, they did offer to ask the question here themselves, but I was faster |
| 10:29:25 | × | kuribas quits (~user@2a02:1810:2825:6000:f0b5:eba4:a391:e0d0) (Quit: ERC (IRC client for Emacs 27.1)) |
| 10:30:37 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 10:31:03 | × | acidjnk quits (~acidjnk@p200300d6e7137a51b984c8c27a82076c.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 10:31:21 | → | acidjnk joins (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) |
| 10:31:48 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 10:32:58 | → | jludwig joins (~justin@li657-110.members.linode.com) |
| 10:33:06 | → | nate3 joins (~nate@98.45.169.16) |
| 10:35:32 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds) |
| 10:36:18 | × | acidjnk quits (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 10:37:49 | × | nate3 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 10:39:51 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 255 seconds) |
| 10:45:49 | → | hugo1 joins (~hugo@145.136.129.212) |
| 10:46:32 | → | __monty__ joins (~toonn@user/toonn) |
| 10:51:48 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:f5b1:39e2:deb2:275) |
| 10:58:31 | → | king_gs joins (~Thunderbi@187.201.83.115) |
| 10:59:00 | × | chomwitt quits (~chomwitt@ppp-94-69-177-170.home.otenet.gr) (Ping timeout: 248 seconds) |
| 11:09:03 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 11:10:52 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
| 11:11:54 | → | jinsun joins (~jinsun@user/jinsun) |
| 11:14:03 | × | ubert1 quits (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) (Ping timeout: 255 seconds) |
| 11:15:41 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Ping timeout: 276 seconds) |
| 11:16:05 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 246 seconds) |
| 11:17:30 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 11:21:38 | → | Guest|51 joins (~Guest|51@95.10.63.122) |
| 11:22:11 | × | Guest|51 quits (~Guest|51@95.10.63.122) (Client Quit) |
| 11:24:22 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 11:24:51 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 11:29:30 | <merijn> | Once again the Haskell Survey question on extensions is a mess that forces kinda misleading answers |
| 11:30:15 | × | king_gs quits (~Thunderbi@187.201.83.115) (Read error: Connection reset by peer) |
| 11:31:48 | → | king_gs joins (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) |
| 11:33:20 | <[exa]> | and prolog is again missing |
| 11:34:22 | → | LarchOye1 joins (nonmoose@2604:2d80:6789:9100:b1fe:b223:d6bb:6b68) |
| 11:34:36 | ← | LarchOye1 parts (nonmoose@2604:2d80:6789:9100:b1fe:b223:d6bb:6b68) () |
| 11:36:44 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 11:38:04 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 11:38:08 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 11:39:35 | <AndreasK> | merijn: In what way? |
| 11:42:02 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 11:42:02 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 11:43:00 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 11:43:34 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 11:44:13 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 11:44:32 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 11:44:58 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 246 seconds) |
| 11:45:30 | → | pitiK3U joins (~Piti@user/pitiK3U) |
| 11:45:51 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 11:48:00 | × | tureba quits (~tureba@tureba.org) (Ping timeout: 268 seconds) |
| 11:51:06 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds) |
| 11:52:18 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 255 seconds) |
| 11:52:46 | → | kuribas joins (~user@2a02:1810:2825:6000:75a5:ce7d:3131:4615) |
| 11:54:28 | × | hueso quits (~root@user/hueso) (Ping timeout: 248 seconds) |
| 11:55:58 | → | acidjnk joins (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) |
| 11:58:01 | → | hueso joins (~root@user/hueso) |
| 12:00:28 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 255 seconds) |
| 12:00:28 | × | fserucas_ quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 255 seconds) |
| 12:07:01 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 12:08:39 | <dminuoso> | Regarding setSocketCloseOnExec: https://github.com/mzero/plush/blob/master/src/Plush/Server/Warp.hs |
| 12:09:00 | <dminuoso> | Why exactly would it be necessary to set close on exec on the socket? |
| 12:09:33 | <dminuoso> | Ive went through the manual pages of open(2) and socket(2) a few times, but the wording is way too abstract for me to come up with concrete examples why not doing this could be problematic |
| 12:10:22 | × | CiaoSen quits (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 12:11:32 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 12:12:38 | <dminuoso> | It seems to cause problems, the haskell server code would have to `fork` first (which already seems notoriously unsafe with GHC RTS), in which case the forked process would have a valid file descriptor to my socket in the haskell server |
| 12:14:01 | <dminuoso> | The thing that confuses me most, is the wording in the haddock documentation "into processes fork/exec'ed by the shell". Surely running `my-haskell-server&` in a shell will not leak the file descriptor to the outside shell |
| 12:16:09 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
| 12:17:05 | <tomsmeding> | dminuoso: isn't the idea of close-on-exec that child processes you start don't inherit the socket? |
| 12:17:53 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 12:18:26 | <dminuoso> | Right, but the only way this would ever be a problem in haskell if you used forkProcesses, in which case you're already insane. |
| 12:19:02 | <tomsmeding> | dminuoso: doesn't the same happen through other ways of spawning processes? |
| 12:19:11 | <tomsmeding> | e.g. System.Process stuff |
| 12:19:57 | <tomsmeding> | I've been using withCreateProcess and fd's were inherited |
| 12:20:31 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 12:21:06 | <dminuoso> | I find forking to be a really strange concept that wont make sense. |
| 12:21:25 | <dminuoso> | But anyway, I suppose withCreateProcess will end up calling execve or some such, uh? |
| 12:21:32 | <tomsmeding> | one need not fork to get this |
| 12:21:36 | <tomsmeding> | it will use posix_spawn |
| 12:21:49 | <tomsmeding> | (if available, otherwise vfork/exec iirc) |
| 12:21:54 | <dminuoso> | Okay, but close-on-exec wouldnt affect that. |
| 12:21:59 | <dminuoso> | Only if exec was used. |
| 12:22:07 | <dminuoso> | close-on-exec is documented to only affect fork/exec calls. |
| 12:22:14 | <tomsmeding> | really? |
| 12:22:33 | <dminuoso> | Hold on |
| 12:22:42 | <tomsmeding> | dminuoso: from the posix_spawn manpage: "3. File descriptors with the FD_CLOEXEC flag set are closed." |
| 12:22:55 | <tomsmeding> | otherwise CLOEXEC would be utterly useless |
| 12:23:00 | <tomsmeding> | well not utterly, but very |
| 12:23:31 | → | fserucas joins (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) |
| 12:23:33 | <dminuoso> | No this is a glibc documentation bug then possibly |
| 12:23:35 | <dminuoso> | https://www.gnu.org/software/libc/manual/html_node/Descriptor-Flags.html |
| 12:23:41 | <dminuoso> | This flag specifies that the file descriptor should be closed when an exec function is invoked; see Executing a File. |
| 12:23:43 | → | fserucas_ joins (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) |
| 12:23:53 | <dminuoso> | https://www.gnu.org/software/libc/manual/html_node/Executing-a-File.html |
| 12:24:08 | <tomsmeding> | you know what's another glibc documentation bug? can write(2) return 0 on a non-O_NONBLOCK fd |
| 12:24:08 | <dminuoso> | Sorry, I had this documentation in mind |
| 12:24:40 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:24:57 | dminuoso | does not want to depend on `unix` just to set close on exec... :( |
| 12:25:00 | × | Patternmaster quits (~georg@user/Patternmaster) (Ping timeout: 268 seconds) |
| 12:25:02 | <tomsmeding> | right, that could take clarification |
| 12:25:20 | <tomsmeding> | though posix_spawn is documented as simulating a specific usecase of fork/exec |
| 12:25:45 | <tomsmeding> | I've also gotten error codes from posix_spawn that are not documented as possible codes |
| 12:25:54 | <dminuoso> | "In fact, they provide only a subset of the functionality that can be achieved by using the system calls." |
| 12:26:04 | <tomsmeding> | I think taking statements like this to exclude all other possibilities is fraught in unix documentation |
| 12:26:05 | <dminuoso> | Which really reads as "please read both manuals side-by-side and figure out the differences" |
| 12:26:26 | <tomsmeding> | no, it means "the relation is only on a high level, the implementation is completely separate, read this manual page in full" |
| 12:26:35 | <dminuoso> | fair enough |
| 12:26:38 | × | Guest75 quits (~Guest75@178.141.177.81) (Ping timeout: 260 seconds) |
| 12:26:39 | <tomsmeding> | this documentation is not maths, unfortunately |
| 12:26:48 | <tomsmeding> | but getting it watertight would blow up size by 10x probably |
| 12:26:51 | <tomsmeding> | also not ideal |
| 12:27:13 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 12:27:29 | <dminuoso> | But actually... mmm. I want signal handling anyway. So `unix` it is. |
| 12:31:53 | <tomsmeding> | dminuoso: it's a boot lib, it's not that bad |
| 12:32:11 | × | hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8) |
| 12:32:12 | → | paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
| 12:32:12 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 12:32:18 | × | pitiK3U quits (~Piti@user/pitiK3U) (Read error: Connection reset by peer) |
| 12:32:42 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 12:32:48 | → | xff0x joins (~xff0x@2405:6580:b080:900:dde7:2b6c:97ae:a5eb) |
| 12:33:09 | <tomsmeding> | most of the things in the manpage for a function will actually happen |
| 12:33:21 | <tomsmeding> | but if it's not in the manpage, it might still happen! :D |
| 12:33:39 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:34:46 | → | jonathanx_ joins (~jonathan@c-5eea602c-74736162.cust.telenor.se) |
| 12:35:16 | <merijn> | dminuoso: Time to buy the book I keep telling everyone about |
| 12:35:18 | <merijn> | dminuoso: No |
| 12:35:25 | <merijn> | dminuoso: You don't want signal handling >.< |
| 12:35:53 | <merijn> | you just think you do, because it seems like something that, you know, sane semantics |
| 12:36:00 | <merijn> | Instead of being an eldritch nightmare |
| 12:37:22 | × | [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection) |
| 12:37:25 | <dminuoso> | No I do want it. |
| 12:37:41 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds) |
| 12:37:42 | <dminuoso> | I kind of like a controlled graceful shutdown on SIGINT/SIGTERM. |
| 12:37:44 | → | [Leary] joins (~Leary]@user/Leary/x-0910699) |
| 12:37:59 | <merijn> | Well, you can't have that in Haskell, atm :p |
| 12:38:04 | <dminuoso> | Sure I can,. |
| 12:38:16 | <dminuoso> | It may not behave well in exotic edge cases, but in practice it does work. |
| 12:38:41 | × | acidjnk quits (~acidjnk@p200300d6e7137a51b1aa0752e3eaff2e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 12:40:33 | <merijn> | dminuoso: Anyway, time to invest in a copy of APUE ;) |
| 12:40:39 | <dminuoso> | Mmm, its actually on my shelf |
| 12:41:16 | <merijn> | That coulda answered all your CLOEXEC like questions :p |
| 12:42:55 | → | abhiroop joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 12:43:50 | × | [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection) |
| 12:44:09 | → | [Leary] joins (~Leary]@user/Leary/x-0910699) |
| 12:45:20 | → | hughjfchen joins (~hughjfche@vmi556545.contaboserver.net) |
| 12:47:41 | × | hugo1 quits (~hugo@145.136.129.212) (Quit: WeeChat 3.5) |
| 12:47:59 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 12:59:00 | × | razetime quits (~quassel@117.254.35.246) (Ping timeout: 248 seconds) |
| 12:59:57 | → | simendsjo joins (~user@84.211.91.241) |
| 13:00:47 | → | jonathanx__ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 13:01:36 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
| 13:03:16 | × | jonathanx_ quits (~jonathan@c-5eea602c-74736162.cust.telenor.se) (Ping timeout: 248 seconds) |
| 13:06:26 | × | simendsjo quits (~user@84.211.91.241) (Remote host closed the connection) |
| 13:13:00 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
| 13:16:32 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 13:17:21 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) (Ping timeout: 255 seconds) |
| 13:22:48 | <merijn> | Someone at the Haskell Survey also needs to update where they're getting their country list from... |
| 13:22:55 | <merijn> | "Netherland Antilles"?? |
| 13:23:13 | <merijn> | Those haven't existed for well over a decade now |
| 13:26:01 | → | nschoe joins (~q@141.101.51.197) |
| 13:26:54 | <vpan> | hi, is it possible to skip records when parsing using cassava? https://hackage.haskell.org/package/cassava-0.5.3.0/docs/Data-Csv.html#t:FromRecord mentions `empty`, `mzero`, `fail`, but I can't find a way to indicate skipping instead of failure. I could filter after loading all records, but that feels like a workaround. |
| 13:29:31 | <kuribas> | vpan: no, you'll need to filter after parsing. |
| 13:29:45 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds) |
| 13:31:56 | <tomsmeding> | merijn: I recently made an account somewhere that had a country list with the antilles included, but something like "(formerly)" appended |
| 13:32:49 | × | Sauvin quits (~sauvin@user/Sauvin) (Quit: Leaving) |
| 13:33:24 | <__monty__> | vpan: Though through things like fusion "filtering after parsing" may actually happen during parsing. |
| 13:34:16 | × | marienz quits (~marienz@libera/staff/marienz) (Ping timeout: 615 seconds) |
| 13:35:26 | → | tomku joins (~tomku@user/tomku) |
| 13:35:39 | → | Sauvin joins (~sauvin@user/Sauvin) |
| 13:36:00 | <vpan> | __monty__: sounds interesting, but I'm implementing my first application in Haskell, so I think I should maybe leave fusion alone for a while :) |
| 13:36:13 | <merijn> | tomsmeding: I see the Netherlands Antilles in many places, which makes me kinda curious were people are getting these wildly outdated country lists (and what else is wrong on them) |
| 13:39:01 | <kuribas> | vpan: you don't have a choice :) |
| 13:40:43 | <vpan> | well then, as long as it's not cold fusion... |
| 13:41:13 | → | marienz joins (~marienz@libera/staff/marienz) |
| 13:41:43 | <__monty__> | vpan: It's just something that can happen in the background and is a good thing when it does. Makes certain things that look inefficient efficient. |
| 13:44:12 | <vpan> | __monty__: ok, then that sounds like a kind of optimization. I don't think I've heard fusion in Haskell context, so I assumed "if you don't know fusion, you don't need it". :) |
| 13:45:49 | <geekosaur> | sometimes you do need to rearrange code to encourage it to happen, but 90+% of the time the compiler does it for you |
| 13:46:05 | <geekosaur> | and the times it doesn't are usually worth bug reports somewhere |
| 13:46:28 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 13:46:41 | × | paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 13:47:19 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 13:48:57 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 13:49:03 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 13:50:35 | × | kuribas quits (~user@2a02:1810:2825:6000:75a5:ce7d:3131:4615) (Quit: ERC (IRC client for Emacs 27.1)) |
| 13:51:24 | × | king_gs quits (~Thunderbi@2806:103e:29:47b9:f34b:ffff:4cfc:90a6) (Quit: king_gs) |
| 13:51:30 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 13:52:11 | × | thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
| 13:52:55 | → | acidjnk joins (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
| 13:53:01 | → | chomwitt joins (~chomwitt@athedsl-351939.home.otenet.gr) |
| 13:54:56 | → | wand joins (~user@gateway/tor-sasl/wand) |
| 13:56:04 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 13:58:49 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 13:59:12 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 246 seconds) |
| 13:59:51 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 14:00:10 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 14:03:22 | × | megaTherion quits (~therion@unix.io) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:05:01 | → | Heyting joins (~Heyting@193.198.16.217) |
| 14:05:07 | → | megaTherion joins (~therion@unix.io) |
| 14:05:30 | × | Heyting quits (~Heyting@193.198.16.217) (Client Quit) |
| 14:09:55 | → | dcoutts_ joins (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
| 14:10:36 | → | Heyting joins (~Heyting@193.198.16.217) |
| 14:10:59 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 14:11:46 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 14:12:36 | × | dcoutts quits (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 248 seconds) |
| 14:18:56 | → | dcoutts__ joins (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
| 14:21:42 | × | dcoutts_ quits (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
| 14:22:14 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 14:22:22 | → | thegeekinside joins (~thegeekin@189.180.115.115) |
| 14:24:24 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 14:25:24 | → | dcoutts_ joins (~duncan@host81-156-211-157.range81-156.btcentralplus.com) |
| 14:28:00 | × | dcoutts__ quits (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 255 seconds) |
| 14:29:52 | × | juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 250 seconds) |
| 14:30:45 | → | razetime joins (~quassel@117.254.35.246) |
| 14:33:56 | × | shachaf quits (~shachaf@user/shachaf) (Ping timeout: 276 seconds) |
| 14:34:12 | → | nate3 joins (~nate@98.45.169.16) |
| 14:36:02 | → | juri_ joins (~juri@84.19.175.179) |
| 14:36:24 | → | irrgit_ joins (~irrgit@146.70.27.250) |
| 14:39:17 | × | nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 14:40:55 | → | dcoutts__ joins (~duncan@host109-149-38-108.range109-149.btcentralplus.com) |
| 14:43:16 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 14:43:43 | × | dcoutts_ quits (~duncan@host81-156-211-157.range81-156.btcentralplus.com) (Ping timeout: 272 seconds) |
| 14:45:59 | → | tureba joins (~tureba@tureba.org) |
| 14:46:17 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 14:48:21 | → | nisstyre joins (wes@user/nisstyre) |
| 14:48:41 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:51:14 | → | dcoutts joins (~duncan@host109-149-38-108.range109-149.btcentralplus.com) |
| 14:53:39 | × | dcoutts__ quits (~duncan@host109-149-38-108.range109-149.btcentralplus.com) (Ping timeout: 255 seconds) |
| 14:54:54 | → | dcoutts_ joins (~duncan@host109-149-38-108.range109-149.btcentralplus.com) |
| 14:54:58 | → | shachaf joins (~shachaf@user/shachaf) |
| 14:55:05 | → | tolt joins (~weechat-h@li219-154.members.linode.com) |
| 14:56:53 | × | abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Remote host closed the connection) |
| 14:57:16 | → | abhiroop joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 14:57:42 | × | dcoutts quits (~duncan@host109-149-38-108.range109-149.btcentralplus.com) (Ping timeout: 255 seconds) |
| 15:01:08 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 15:02:51 | × | Heyting quits (~Heyting@193.198.16.217) (Quit: Connection closed) |
| 15:06:44 | → | SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2) |
| 15:08:42 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 15:09:51 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds) |
| 15:14:58 | <lortabac> | I have a memory leak that is (for various reasons) impossible to reproduce locally. Is it a bad idea to run the profiler in production? |
| 15:15:58 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 15:16:09 | <merijn> | Depends, are performance regression in production a problem? |
| 15:16:14 | × | wand quits (~user@gateway/tor-sasl/wand) (Ping timeout: 255 seconds) |
| 15:16:21 | <merijn> | i.e. "define production" |
| 15:17:17 | <lortabac> | production is what the customers are actually using |
| 15:17:37 | <lortabac> | a little performance regression is not a problem |
| 15:17:52 | <merijn> | I would not assume "little" |
| 15:17:53 | <lortabac> | it's a low-traffic service |
| 15:18:01 | <merijn> | You can easily have 10x slowdown |
| 15:18:38 | <lortabac> | erm... I think 10x would not be acceptable |
| 15:19:04 | <lortabac> | up to 2x-3x I would say it's ok |
| 15:19:15 | <merijn> | Then it's probably not a great idea in production unless you test how big the impact is first :p |
| 15:19:44 | <lortabac> | I imagined the profiler to have a smaller impact |
| 15:19:56 | <jlgw_> | lortabac: Maybe you can set up a staging environment? |
| 15:20:22 | <lortabac> | we already have various environments, but the leak is only visible in production |
| 15:20:35 | → | Franciman joins (~Franciman@mx1.fracta.dev) |
| 15:21:55 | × | vpan quits (~0@212.117.1.172) (Quit: Leaving.) |
| 15:21:55 | × | jludwig quits (~justin@li657-110.members.linode.com) (Quit: ZNC - https://znc.in) |
| 15:22:18 | → | CiaoSen joins (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 15:22:54 | → | jludwig joins (~justin@li657-110.members.linode.com) |
| 15:24:04 | <merijn> | lortabac: the profiler needs cost centers which inhibits certain optimisations |
| 15:24:29 | <merijn> | So depending on how crucial those are for your performance you might have MASSIVE regression or "hardly any" |
| 15:27:29 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 15:27:52 | <lortabac> | merijn: thanks, I will try to avoid profiling in production for the moment |
| 15:28:07 | → | econo joins (uid147250@user/econo) |
| 15:28:25 | <lortabac> | if I really need it, I will get some performance data first |
| 15:28:43 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 15:28:44 | <merijn> | lortabac: There's some work on other ways to profile nowadays too, e.g., DWARF symbols |
| 15:28:49 | <merijn> | which should have less/no overhead |
| 15:29:00 | <merijn> | but you have to consult the GHC user guide for details |
| 15:32:14 | → | abhiroop_ joins (~abhiroop@c-5eea67ce-74736162.cust.telenor.se) |
| 15:32:29 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
| 15:33:08 | × | abhiroop quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 248 seconds) |
| 15:33:39 | <lortabac> | I don't think I can get a heap profile with DWARF, can I? |
| 15:34:28 | <merijn> | ah, yeah, I guess not |
| 15:34:36 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b8c3:aabe:4f47:1efb) |
| 15:38:03 | <simple> | tfw you come to programming channel, and fear asking a bad question so much that you google it a bit more to be able to refer to it with better words, and you end up solving it yourself |
| 15:38:34 | <geekosaur> | we don't bite 🙂 the only bad question is the one that isn't asked |
| 15:41:21 | <simple> | I do wonder if i did it the best way though. I'm building a server that can accept multiple connections, and needs to track state. Before you comment on that, I'm just trying to capture the time of startup in a (gasp) global variable in module Main, so i can hPutStr something like 'this server was started at 2022-11-04 08:41:24' |
| 15:42:05 | <simple> | since time is an IO monady thingy, it made it a bit difficult.. |
| 15:42:38 | <c_wraith> | does it need to be global, or just available to your connection handlers? |
| 15:43:09 | <simple> | well, there are a few different functions that would need it, but not many |
| 15:43:19 | <merijn> | MVar/IORef? |
| 15:43:40 | <simple> | i come from a Perl background, so that probably helps you with my thought process |
| 15:45:25 | × | jtomas quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 246 seconds) |
| 15:45:26 | <simple> | serverStartTime :: () -> Int \n serverStartTime () = do \n now <- getCurrentTime \n show now |
| 15:45:47 | <simple> | it compiles, at least.. |
| 15:45:51 | <lortabac> | simple: can't you just pass 'now' to all the functions that need it? |
| 15:45:59 | <c_wraith> | While it's possible to create global variables, it's.. dangerous. Haskell really isn't intended to work that way, so there are a lot of pitfalls; places the compiler might do something weird because it's designed with the assumption that top-level values are pure and immutable. |
| 15:46:27 | <merijn> | simple: eh, it is *highly* suspicious that compiles :p |
| 15:46:34 | <merijn> | Can you pastebin the entire main? |
| 15:46:35 | <simple> | yeah.. it doesn't, sorry |
| 15:47:01 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 15:47:03 | <simple> | i guess i didn't finish it last night when my eyes were falling shut |
| 15:47:21 | <c_wraith> | It's much more common to be explicit about these things and pass values around as needed. Maybe a bunch of them packaged up together into an Environment type that could hold a bunch of these concerns |
| 15:47:35 | <simple> | i can pastebin the whole thing, it's an attempt at building a whole IRCD in Haskell |
| 15:48:27 | <merijn> | simple: I mean, I'd just do "getCurrentTime" in main and pass the result to any further code, as lortabac suggests |
| 15:48:43 | <simple> | https://paste.tomsmeding.com/SCbGYyLi |
| 15:49:30 | <simple> | i'm pretty sure there's a lot of naive code in that pastebin right now |
| 15:50:08 | <merijn> | simple: I mean, why can't the current time be an argument to "premotd" (via an extra argument to processConnect)? |
| 15:50:26 | <simple> | i don't want the current time, i want the time that the server started |
| 15:50:31 | <merijn> | simple: Yes |
| 15:51:16 | <merijn> | simple: You just do "now <- getCurrentTime" after the ' putStrLn "Listening on 6667..."' and pass 'now' as extra argument to processConnect? |
| 15:52:10 | <simple> | then i would have to pass it around to everything else too in a dependency chain? |
| 15:52:36 | <merijn> | Sure |
| 15:52:46 | → | seriley joins (~seriley@97-120-69-62.ptld.qwest.net) |
| 15:52:59 | <merijn> | But how many places do you need to pass it too, seems like just one |
| 15:53:33 | <geekosaur> | do you not have other top level state? I'd think you would have server configuration options |
| 15:53:38 | <simple> | i understand that would work. it does feel awful weird to me though, having always used globally available variables |
| 15:54:03 | <merijn> | simple: Global variables aren't really thing and global variables based on IO are even less of a thing |
| 15:54:07 | <simple> | geekosaur: yeah, the plan is to create a settings file eventually, i was trying to hardcode it at the top |
| 15:54:09 | <merijn> | Especially if you value sanity |
| 15:54:31 | <merijn> | simple: Normally you'd define a Config datatype and use something like ReaderT to propagate the entire config type through your application |
| 15:54:32 | <geekosaur> | we prefer to be explicit about it, so you always know what's available when. and these days globals are somewhat frowned upon even in languages that have them, just because they complicate reasoning about code |
| 15:54:59 | <merijn> | And then everything just has a explicit Config argument |
| 15:56:03 | simple | nods |
| 15:56:20 | <simple> | that makes more sense, thank you merijn, geekosaur |
| 15:56:46 | <simple> | c_wraith: documention somewhere about Environment type? |
| 15:57:24 | <merijn> | simple: He just means what I said some custom ADT holding the config :p |
| 15:57:25 | <geekosaur> | also if you plumb your config now it means you don't have to rewrite everything later when you want to add server config |
| 15:57:39 | <simple> | merijn: this Config? https://hackage.haskell.org/package/config-value-0.8.3/docs/Config.html |
| 15:58:41 | <simple> | probably not that link, ugh |
| 15:58:44 | <geekosaur> | no, you'd define something specific to your application |
| 15:59:07 | <merijn> | No, just a datatype you define for yourself, like "data Config = Config { serverUrl :: String, serverPort :: Int, serverStart :: Time, ... }" |
| 15:59:55 | <simple> | that even makes it easier to hardcode it short-term. but i'll have to pass around that whole config instance too, right? |
| 16:00:03 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: You have been kicked for being idle) |
| 16:00:18 | <merijn> | simple: You'd pass around the whole config thing yes |
| 16:00:23 | × | teo quits (~teo@user/teo) (Ping timeout: 276 seconds) |
| 16:00:34 | <geekosaur> | so, I'm one of the maintainers of xmonad, a window manager written in Haskell. we have an XConf holding te user config, a connection to the X server, and various other read-only configuration values. there's also an XState holding the read-write state such as the current workspace setup including which windows are on which workspaces |
| 16:00:39 | <merijn> | And yes, it makes it trivial to hardcode things and then later replace the hardcoded thing with "loadConfig :: FilePath -> IO Config" |
| 16:01:18 | <geekosaur> | newtype X a = StateT XState (ReaderT XConf IO) a |
| 16:01:59 | <geekosaur> | and then everything that needs it is … -> X a for some relevant a |
| 16:02:22 | × | razetime quits (~quassel@117.254.35.246) (Read error: Connection reset by peer) |
| 16:02:24 | <geekosaur> | and Haskell takes care of making sure everything gets an XState and XConf |
| 16:02:36 | → | razetime joins (~quassel@117.254.35.246) |
| 16:03:02 | <simple> | that's still a little over my head. but i'm learning fast. it'd probably make sense to me in a week. |
| 16:04:52 | <merijn> | simple: Pretend "(ReaderT XConf IO) a" in that is just "XConf -> IO a" :) |
| 16:05:38 | <geekosaur> | @unmtl StateT XState (ReaderT XConf IO) a |
| 16:05:38 | <lambdabot> | XState -> XConf -> IO (a, XState) |
| 16:06:01 | <seriley> | in ghci, how can I determine what warnings are enabled? |
| 16:06:56 | → | jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) |
| 16:08:09 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 16:08:41 | <merijn> | simple: The other advantage is that it's fairly easy to add/remove fields to the config and immediately get errors when you're (trying to) use removed fields |
| 16:09:25 | <merijn> | "ReaderT Config" has to be one of the pattern with the best "power/convenience-to-cost" ratios in Haskell |
| 16:09:25 | × | abhiroop_ quits (~abhiroop@c-5eea67ce-74736162.cust.telenor.se) (Read error: Connection reset by peer) |
| 16:09:47 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 16:09:56 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 248 seconds) |
| 16:10:49 | <seriley> | oops! Found it...use :seti |
| 16:12:39 | → | abhiroop_ joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 16:12:56 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 16:12:56 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 16:13:03 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:13:06 | → | coot joins (~coot@213.134.171.3) |
| 16:13:08 | <c_wraith> | seriley: oh hey. Neat. I hadn't realized -fimplicit-import-qualified was an extension, but it's obvious what it does from how ghci works |
| 16:13:09 | × | califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in) |
| 16:13:24 | → | califax joins (~califax@user/califx) |
| 16:13:25 | <c_wraith> | well. a flag, not an extension |
| 16:14:12 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 248 seconds) |
| 16:14:28 | <seriley> | Why isn't an incomplete patterns warning given for factorial :: Integer -> Integer;factorial 0 = 1;factorial n = n * factorial (n - 1)? |
| 16:14:56 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 16:15:02 | <c_wraith> | it's not incomplete |
| 16:15:08 | <c_wraith> | the second case catches everything |
| 16:15:19 | <seriley> | factorial (-1)... |
| 16:15:26 | <c_wraith> | it catches it |
| 16:15:34 | <c_wraith> | and loops forever, but there's a pattern that handles it |
| 16:15:53 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 16:15:59 | → | ft joins (~ft@p508dbd59.dip0.t-ipconnect.de) |
| 16:16:04 | <seriley> | ok. I see now |
| 16:16:22 | <geekosaur> | haskell isn't magic, it doesn't know your code will loop forever on a negative number |
| 16:16:31 | <c_wraith> | Hmm. I suppose that only loops until you run out of memory, not "forever". :P |
| 16:16:42 | <seriley> | i get a stack overflow |
| 16:16:46 | <c_wraith> | yeah |
| 16:16:58 | <c_wraith> | If it was an incomplete pattern match, you'd get an exception |
| 16:17:18 | <c_wraith> | > let Just x = Nothing in x |
| 16:17:20 | <lambdabot> | *Exception: <interactive>:3:5-20: Non-exhaustive patterns in Just x |
| 16:17:37 | × | merijn quits (~merijn@86.86.29.250) (Ping timeout: 246 seconds) |
| 16:17:50 | <seriley> | thanks |
| 16:27:15 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 16:33:22 | × | abhiroop_ quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 246 seconds) |
| 16:33:46 | → | jonathanx_ joins (~jonathan@c-5eea6015-74736162.cust.telenor.se) |
| 16:33:55 | × | nschoe quits (~q@141.101.51.197) (Ping timeout: 272 seconds) |
| 16:35:29 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:36:27 | × | jonathanx__ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds) |
| 16:38:34 | → | jtza8 joins (~user@165.255.137.137) |
| 16:39:57 | → | tremon joins (~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) |
| 16:42:35 | <simple> | I've done a 'cabal install network', and i use Network.Socket in my code, and 'cabal run' doesn't complain.. but i canot import Network.Socket in ghci.. any clues? |
| 16:43:45 | <geekosaur> | if you're using cabal, you probably want cabal repl instead of ghci |
| 16:44:37 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 16:46:23 | <simple> | geekosaur++ |
| 16:47:01 | <simple> | bah, now i need to find where it keeps its .cabal file |
| 16:48:23 | <c_wraith> | if you didn't create one, it's in /tmp and liable to be deleted at any time |
| 16:48:43 | → | machinedgod joins (~machinedg@83-131-151-179.adsl.net.t-com.hr) |
| 16:48:48 | <simple> | on windows, looks like AppData/Local/Tmp/ stuff |
| 16:49:31 | <c_wraith> | oh. windows, good point. But either way, my recommendation is to create your own package to work with |
| 16:50:12 | <c_wraith> | global installs really aren't a good pattern, and really aren't supported anymore |
| 16:50:34 | <c_wraith> | You can force them to work, but it's really fragile and liable to break |
| 16:50:36 | <[exa]> | spoiler: everyone loves global installs for random hacking |
| 16:50:56 | <simple> | I have (I think). I'm using IntelliJ Idea with a haskell plugin, in a project directory. if i run the ghci/repl from that dir, will it pick up the .cabal file? |
| 16:51:01 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
| 16:51:01 | × | OpenSource quits (~kernel@user/OpenSource) (Quit: ZNC - https://znc.in) |
| 16:51:11 | <c_wraith> | if you've created one there, yes |
| 16:51:14 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:f5b1:39e2:deb2:275) (Quit: WeeChat 2.8) |
| 16:51:17 | → | OpenSource joins (~kernel@user/OpenSource) |
| 16:51:30 | <c_wraith> | [exa]: but you can random hacking with cabal repl -b |
| 16:52:15 | <[exa]> | yeah but that sounds like thinking about dependencies in advance :D |
| 16:52:22 | <simple> | hm, the repl started by running my code, which is not what i wanted |
| 16:52:30 | <[exa]> | anyway I didn't know about -b, thanks |
| 16:52:47 | <c_wraith> | Yeah, I use it all the time. |
| 16:52:55 | <[exa]> | simple: compiling or running? |
| 16:53:04 | <c_wraith> | well. probably loading |
| 16:54:18 | <[exa]> | is there some good syntax pattern to combine a few `do` blocks in a `choice [...]` ? |
| 16:54:49 | → | sympt joins (~sympt@user/sympt) |
| 16:55:05 | <[exa]> | (or, more like, do something similar without the 2 sets of parentheses) |
| 16:55:25 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:55:59 | × | OpenSource quits (~kernel@user/OpenSource) (Client Quit) |
| 16:56:26 | <simple> | yeah, loading |
| 16:59:06 | <c_wraith> | Unfortunately, I don't know how to make it stop doing that. Sometimes it's not what I want, either |
| 16:59:16 | × | acidjnk quits (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 16:59:30 | <[exa]> | oh wait the inner do's don't need parentheses, good, world is saved. |
| 16:59:46 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:00:38 | → | Patternmaster joins (~georg@li1192-118.members.linode.com) |
| 17:00:38 | × | Patternmaster quits (~georg@li1192-118.members.linode.com) (Changing host) |
| 17:00:38 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 17:01:30 | × | ubert quits (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) (Quit: ubert) |
| 17:01:49 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 17:02:34 | → | ubert joins (~Thunderbi@178.115.71.138.wireless.dyn.drei.com) |
| 17:06:04 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 17:06:12 | × | dtman34 quits (~dtman34@c-75-73-141-79.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 17:06:51 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
| 17:06:51 | × | machinedgod quits (~machinedg@83-131-151-179.adsl.net.t-com.hr) (Ping timeout: 272 seconds) |
| 17:08:24 | → | sadmax joins (~user@209.205.174.253) |
| 17:09:22 | → | abhiroop_ joins (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) |
| 17:12:27 | × | razetime quits (~quassel@117.254.35.246) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 17:12:52 | → | Guest75 joins (~Guest75@178.141.177.81) |
| 17:17:51 | → | Tuplanolla joins (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) |
| 17:18:12 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 17:18:15 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds) |
| 17:18:37 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
| 17:18:53 | → | sadmax joins (~user@209.205.174.253) |
| 17:20:10 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 17:20:28 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 17:21:05 | → | sadmax joins (~user@209.205.174.253) |
| 17:21:24 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 17:21:59 | → | sadmax joins (~user@209.205.174.253) |
| 17:25:01 | × | sadmax quits (~user@209.205.174.253) (Client Quit) |
| 17:26:41 | → | sadmax joins (~user@209.205.174.253) |
| 17:28:24 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 17:28:32 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 17:29:09 | → | sadmax joins (~user@209.205.174.253) |
| 17:29:26 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 17:29:50 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 17:30:24 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 17:30:40 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 17:30:40 | → | sadmax joins (~user@209.205.174.253) |
| 17:30:47 | → | jonathanx__ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 17:31:18 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 246 seconds) |
| 17:31:43 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 17:33:02 | × | jonathanx_ quits (~jonathan@c-5eea6015-74736162.cust.telenor.se) (Ping timeout: 246 seconds) |
| 17:33:50 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 17:35:31 | <EvanR> | if (| |) is banana brackets what is [| |] |
| 17:35:52 | <EvanR> | hamburger bun brackets or |
| 17:36:17 | <geekosaur[m]> | Coconut brackets? |
| 17:36:23 | <dolio> | Those were envelopes, I think. |
| 17:37:19 | <geekosaur[m]> | (SpongeBob brackets but can anyone over age 6 say that?) |
| 17:37:41 | [exa] | writes that down |
| 17:39:16 | <dolio> | I suppose it depends on how you ascii-fy the symbol in their paper. |
| 17:39:39 | <dolio> | Could be [| or [[ |
| 17:39:41 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 17:41:11 | <c_wraith> | I think I'd call what they used [[ and ]] |
| 17:41:56 | <c_wraith> | has anyone successfully used a private library in a cabal file with no public library? When I try, it keeps telling me that it can't find the private library |
| 17:42:19 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Remote host closed the connection) |
| 17:42:47 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 17:42:55 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 17:43:35 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 272 seconds) |
| 17:44:14 | → | slack1256 joins (~slack1256@191.126.227.201) |
| 17:45:23 | <slack1256> | On postgresql-simple, is anyone using ConnectInfo with unix sockets? |
| 17:45:24 | × | fserucas quits (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Quit: Leaving) |
| 17:45:51 | <slack1256> | The libpq docs say that I should percent encode it, but maybe there is a better way using ConnectInfo. |
| 17:47:32 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
| 17:47:33 | <slack1256> | Nevermind! I did not have to percent encode at all! |
| 17:48:25 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 17:50:52 | <monochrom> | I have read that [| |] is called Oxford brackets. |
| 17:51:21 | <monochrom> | Oh, probably I read that from the GHC user's guide. |
| 17:52:45 | × | jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Write error: Connection reset by peer) |
| 17:53:14 | → | jpds1 joins (~jpds@gateway/tor-sasl/jpds) |
| 17:57:56 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 18:00:11 | × | nurupo quits (~nurupo.ga@user/nurupo) (Quit: nurupo.ga) |
| 18:00:15 | <EvanR> | an old post about why there is no gui library built into haskell https://mail.haskell.org/pipermail/haskell-cafe/2007-August/030191.html |
| 18:00:27 | → | nurupo joins (~nurupo.ga@user/nurupo) |
| 18:01:16 | <EvanR> | they close suggesting maybe instead you want a way to come up with a custom gui for a given application, which makes me realize the "standard" libraries are really doing two separate (?) things, giving you a "standard" window with standard decorations and on the other hand trying to be a gui library |
| 18:01:47 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 18:01:49 | <EvanR> | often you use the standard toolkit, get a standard decorated window, then make this huge custom thing because the library can't handle it |
| 18:02:54 | <monochrom> | I remember Motif, heh. |
| 18:03:13 | <EvanR> | I remember apps, never tried to make anything in it |
| 18:03:43 | → | acidjnk joins (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
| 18:04:03 | <EvanR> | someone recently was saying athena widgets was the most amazing toolkit, still |
| 18:04:31 | × | jpds1 quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 18:04:53 | → | jpds1 joins (~jpds@gateway/tor-sasl/jpds) |
| 18:05:14 | <monochrom> | Guile is the idea of "DSL for describing UI object tree" standardized. |
| 18:05:41 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 18:05:56 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 18:06:19 | <monochrom> | To be sure, Guile came way after, and most likely independently thought up. |
| 18:06:29 | <EvanR> | Guile is a what |
| 18:06:38 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 246 seconds) |
| 18:06:42 | <c_wraith> | EvanR: I wouldn't say the things are separate, but they are totally different levels of abstraction |
| 18:06:49 | <monochrom> | Guile is a DSL for decribing a tree of UI objects. :) |
| 18:06:54 | → | stackdroid18 joins (14094@user/stackdroid) |
| 18:07:01 | <EvanR> | as a haskell library? lisp library? |
| 18:07:17 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 18:07:21 | <monochrom> | No, I think Guile is for GTK. |
| 18:07:36 | <EvanR> | shudder |
| 18:07:40 | <monochrom> | Yeah GTK. |
| 18:07:46 | <c_wraith> | not TK, GTK. :P |
| 18:08:04 | <geekosaur> | guile predates gtk… |
| 18:08:15 | <geekosaur> | that said, who remembers autolisp? |
| 18:08:20 | <monochrom> | Well, this means that even the imperative people eventually discovered that "DSL for UI object tree" is a central idea. |
| 18:08:32 | <c_wraith> | well, there are multiple things called guile |
| 18:08:44 | <monochrom> | OK heh |
| 18:08:48 | <c_wraith> | Like... the guy from Street Fighter |
| 18:08:51 | <darkling> | geekosaur: Yes, I wrote a Bezier module for Autocad in Autolisp on a MicroVAX II. :) |
| 18:09:05 | <monochrom> | Ah OK thanks geekosaur. |
| 18:09:43 | <monochrom> | I guess this is why Guile uses s-expression syntax. |
| 18:11:00 | <monochrom> | When I was in university and in microprocessor courses, Autocad was always mentioned as a performance benchmarking platform. |
| 18:11:21 | <monochrom> | Things like "287 can render the cathedral in 10 seconds" :) |
| 18:12:02 | <monochrom> | and "now, this other company's clone of 287 can do it in 9" |
| 18:12:10 | <dolio> | I thought guile was just another scheme, for some reason. |
| 18:12:24 | <EvanR> | that can't be the same guile |
| 18:12:36 | <lagash> | GNU Guile? It's a Scheme. |
| 18:12:39 | <darkling> | dolio: That too. |
| 18:13:20 | <monochrom> | X_X |
| 18:13:27 | <EvanR> | all this disproves Refl :: Guile = Guile |
| 18:13:39 | <monochrom> | haha yeah |
| 18:14:52 | × | CiaoSen quits (~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 18:15:32 | geekosaur | was under the impression that GNU had been reworking guile from its original "it's just another Scheme" to "it's the glue that holds stuff together" (with plans for it to replace elisp, etc.) |
| 18:16:48 | <monochrom> | That probably will take another 100 years. Speaking of cathedrals. >:) |
| 18:17:06 | × | cstml quits (~cstml@user/cstml) (Ping timeout: 255 seconds) |
| 18:19:04 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
| 18:21:47 | <lagash> | No no, use Common Lisp! :P |
| 18:22:07 | ski | bites geekosaur tentatively |
| 18:23:29 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 18:23:54 | <geekosaur> | moo? |
| 18:24:00 | ski | . o O ( <https://www.emacswiki.org/emacs/GuileEmacs>,<https://www.emacswiki.org/emacs/Edwin>,<https://www.emacswiki.org/emacs/Zmacs>,<https://www.emacswiki.org/emacs/Climacs>,<https://www.emacswiki.org/emacs/XEmacs> ; <https://www.emacswiki.org/emacs/Emacsen>,<https://www.emacswiki.org/emacs/EmacsImplementations> ) |
| 18:24:07 | <ski> | <geekosaur> we don't bite 🙂 the only bad question is the one that isn't asked |
| 18:24:30 | → | narendraj9 joins (~user@2a02:8109:b63f:c344::ff2a) |
| 18:24:31 | <ski> | (er, rather <https://www.emacswiki.org/emacs/EdWin>) |
| 18:25:56 | → | AlexNoo_ joins (~AlexNoo@178.34.150.205) |
| 18:26:14 | × | hiredman quits (~hiredman@frontier1.downey.family) (Ping timeout: 246 seconds) |
| 18:26:56 | <geekosaur> | wasn't some dialect of lisp or scheme what the original emacs was rewritten into? (the very first version being in TECO) |
| 18:27:32 | × | Alex_test quits (~al_test@178.34.163.109) (Ping timeout: 248 seconds) |
| 18:27:51 | ← | jtza8 parts (~user@165.255.137.137) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 18:28:04 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds) |
| 18:28:19 | <ski> | the current one (speaking of GNU Emacs, and i guess XEmacs) is written in Emacs Lisp (and C) |
| 18:28:24 | → | beteigeuze joins (~Thunderbi@89.187.168.55) |
| 18:28:50 | × | AlexZenon quits (~alzenon@178.34.163.109) (Ping timeout: 268 seconds) |
| 18:28:51 | <ski> | (Scheme is a Lisp, btw) |
| 18:29:23 | × | AlexNoo quits (~AlexNoo@178.34.163.109) (Ping timeout: 246 seconds) |
| 18:30:45 | <geekosaur> | yes, I know, but I distinguish them because of my history (MacLisp Scheme isn't 😛 ) |
| 18:32:28 | <ski> | "Weinreb's EINE was the first Emacs written in Lisp.", apparently |
| 18:32:52 | × | beteigeuze quits (~Thunderbi@89.187.168.55) (Ping timeout: 248 seconds) |
| 18:32:52 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds) |
| 18:33:12 | <monochrom> | A few days ago on Oct 31 I would bite. >:) |
| 18:33:32 | <ski> | "Many versions of Emacs, including GNU Emacs, would later adopt Lisp as an extension language." |
| 18:34:15 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 272 seconds) |
| 18:34:53 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 272 seconds) |
| 18:35:06 | → | AlexZenon joins (~alzenon@178.34.150.205) |
| 18:35:14 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 18:35:43 | → | nate3 joins (~nate@98.45.169.16) |
| 18:36:12 | × | elevenkb quits (~elevenkb@105.184.125.168) (Read error: Connection reset by peer) |
| 18:36:42 | <ski> | seems like Stallman was inspired by an editor named E, making EMACS (TECO macros) |
| 18:37:12 | → | elevenkb joins (~elevenkb@105.184.125.168) |
| 18:37:22 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 18:38:16 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 18:38:18 | → | Alex_test joins (~al_test@178.34.150.205) |
| 18:39:23 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 18:40:36 | × | nate3 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
| 18:41:35 | × | abhiroop_ quits (~abhiroop@217-209-157-8-no2000.tbcn.telia.com) (Ping timeout: 276 seconds) |
| 18:44:26 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 18:45:00 | intelligent_boat | is now known as intellig1nt_boat |
| 18:45:17 | intellig1nt_boat | is now known as intelligent_boat |
| 18:45:55 | <cheater> | hey everyone |
| 18:46:04 | <cheater> | what are your favourite quick check alikes nowadays? |
| 18:50:19 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:51:01 | <sm> | how do you build a hoogle database for just the local package(s) in the current project ? |
| 18:52:23 | → | ff76 joins (~ff@ip183138.eafit.edu.co) |
| 18:52:26 | <sm> | `hoogle generate --local` dies with "Packages missing documentation: array base binary ..." |
| 18:52:42 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 18:53:10 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 18:53:22 | <sm> | `stack hoogle` builds a db for all transitive deps |
| 18:53:38 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 18:53:46 | × | jlgw_ quits (~jw@83-233-104-81.cust.bredband2.com) (Quit: Konversation terminated!) |
| 18:54:05 | → | jlgw_ joins (~jw@83-233-104-81.cust.bredband2.com) |
| 18:56:46 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 18:57:38 | × | acidjnk quits (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 18:58:02 | → | acidjnk joins (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
| 19:00:33 | × | ff76 quits (~ff@ip183138.eafit.edu.co) (Quit: Connection closed) |
| 19:02:25 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 19:06:04 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 19:07:28 | × | narendraj9 quits (~user@2a02:8109:b63f:c344::ff2a) (Remote host closed the connection) |
| 19:07:32 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 19:08:26 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 19:08:27 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 19:09:34 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 19:09:47 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 19:10:42 | × | fserucas_ quits (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Ping timeout: 246 seconds) |
| 19:11:01 | <sm> | most relevant doc: https://github.com/ndmitchell/hoogle/blob/master/docs/Install.md#generate-a-hoogle-database |
| 19:12:22 | → | dtman34 joins (~dtman34@c-75-73-141-79.hsd1.mn.comcast.net) |
| 19:13:03 | → | nschoe joins (~q@2a01:e0a:8e:a190:2e2e:14c5:dca3:7fc5) |
| 19:13:03 | × | nschoe quits (~q@2a01:e0a:8e:a190:2e2e:14c5:dca3:7fc5) (Client Quit) |
| 19:13:56 | jlgw_ | is now known as jlgw |
| 19:14:41 | <c_wraith> | actually, scratch my last question. has anyone used cabal's private libraries feature at all? I cannot figure out how to make it work |
| 19:15:58 | <sm> | hoogle is both famously useful online, and a perfect example of why haskell tooling makes grown humans weep bitter tears |
| 19:18:29 | <sm> | c_wraith: maybe searching for the syntax will find some packages using it ? |
| 19:18:55 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:18:55 | <sclv> | c_wraith: there's an example here, does it not work? https://cabal.readthedocs.io/en/stable/cabal-package.html?highlight=internal#sublibs |
| 19:19:16 | <c_wraith> | my attempts at something like that do not work. |
| 19:19:46 | <c_wraith> | that example itself is not complete, so it's not testable |
| 19:20:16 | <sclv> | one important thing to do is to make sure you don't have overlapping srcdirs for your different sublibraries |
| 19:20:22 | <sclv> | otherwise ghc gets very confused |
| 19:20:37 | <sclv> | iirc |
| 19:20:57 | <c_wraith> | did that. the problem is that cabal says it can't find the named internal library |
| 19:22:41 | <sclv> | perhaps you need pkg:lib-name ? |
| 19:23:01 | <sclv> | https://github.com/haskell/cabal/issues/7565 |
| 19:24:24 | <c_wraith> | ah, that looks like the issue. I am using newer cabal specifications |
| 19:25:09 | <sclv> | i'm not sure the exact status of how we sort that out, sigh. i think one of the underlying issues complained about is fixed in HEAD but idk how we'll iterate to final syntax or what that means for updating docs :-/ |
| 19:25:19 | <c_wraith> | it'd sure be nice if the docs said something |
| 19:25:42 | <sclv> | yeah, feel free to make a pr and if someone understands whats going on and objects we can solve it then :-) |
| 19:26:19 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 19:26:39 | <c_wraith> | I'm really feeling like cabal repl is a third-class citizen. the amount I have to mangle my cabal file and project layout in order for it to work hurts. |
| 19:27:16 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 19:27:33 | <sm> | "how can we keep docs updated" seems to be the root of many computing woes |
| 19:28:47 | <sclv> | there's some discussion of improving mutihome support now that ghc has it https://github.com/haskell/cabal/issues/8491 |
| 19:29:38 | <sclv> | note that ghci's multihome support is still a wip itself https://gitlab.haskell.org/ghc/ghc/-/issues/20889 |
| 19:31:53 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 19:31:57 | → | Guest19 joins (~Guest19@c83-248-102-237.bredband.tele2.se) |
| 19:32:01 | <c_wraith> | while you're on this topic, is there any way to tell cabal repl to not load all the modules at startup? that can be very slow and unnecessary |
| 19:33:36 | × | seriley quits (~seriley@97-120-69-62.ptld.qwest.net) (Remote host closed the connection) |
| 19:35:19 | <sclv> | --repl-no-load https://cabal.readthedocs.io/en/stable/cabal-commands.html#cabal-repl |
| 19:35:27 | <c_wraith> | thanks |
| 19:40:24 | <[exa]> | is there any good `choice` specialized to Eithers that would give either the first Right or the last Left from the list? |
| 19:42:14 | <EvanR> | that condition is hurting my brain right now |
| 19:42:29 | <EvanR> | Left Left Left Right Left would be what |
| 19:42:54 | <sm> | headMay . rights / lastMay . lefts |
| 19:43:25 | → | Guest98 joins (~Guest98@92.40.70.67.threembb.co.uk) |
| 19:43:28 | <[exa]> | EvanR: the first right |
| 19:43:37 | × | Guest98 quits (~Guest98@92.40.70.67.threembb.co.uk) (Client Quit) |
| 19:44:00 | <EvanR> | is this a case of swapping the role of right and left and using the usual applicative |
| 19:45:17 | × | acidjnk quits (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 19:45:24 | <EvanR> | in which case it seems retroactively smart to call them Left Right instead of the other languages which committed to Ok Error |
| 19:46:00 | <[exa]> | perhaps well, this is my actual problem: if I use `choice` from Control.Applicative.Combinators, `choice [Left "asd"]` gets me `Left ""` because there's Error String instance |
| 19:47:02 | <[exa]> | the normal choice from Control.Applicative (aka asum) reasonably refuses to do anything without importing the stuff from combinators |
| 19:47:10 | <[exa]> | and I'm failing to find the piece of code that did this |
| 19:48:36 | × | elevenkb quits (~elevenkb@105.184.125.168) (Ping timeout: 248 seconds) |
| 19:48:56 | → | Guest47 joins (~Guest47@171.79.46.173) |
| 19:50:12 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Ping timeout: 255 seconds) |
| 19:50:14 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 246 seconds) |
| 19:50:36 | → | Heyting joins (~Heyting@193.198.16.217) |
| 19:50:37 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 19:50:43 | <[exa]> | in short, making some kind of `choice` work without the ugly errorish instances on Either :D |
| 19:51:20 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 19:51:22 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 19:51:47 | × | Major_Biscuit quits (~MajorBisc@c-001-021-035.client.tudelft.eduvpn.nl) (Ping timeout: 276 seconds) |
| 19:52:24 | → | Guest|63 joins (~Guest|63@90.203.229.51) |
| 19:52:28 | → | biberu joins (~biberu@user/biberu) |
| 19:52:58 | <Heyting> | Good evening everyone, is there a list of "must read" Haskell papers, e.g. "Why functional programming matters?" and "Making ad-hoc polymorphism less ad-hoc"? I am looking to deepen my understanding of the Haskell and FP ecosystem |
| 19:53:36 | <Guest|63> | hey, beginner question here, whenever i try to run the ghcup command in powershell, powershell closes. I just tried it on my desktop and it worked first try so i dont know what's going on. I just reset the laptop too so im out of ideas |
| 19:54:09 | <[exa]> | Heyting: I'd answer "must read" with "for what purpose" |
| 19:55:08 | <[exa]> | Heyting: there's a lot of nice stuff about ghc implementation and type system (mostly by SPJ), various nice papers about types and high-order stuff by the lambdaman, and ICFP has great functional pearls each year that are generally worth it |
| 19:55:12 | <EvanR> | there's kind of a lot of papers |
| 19:55:58 | <[exa]> | the SYB/Generics papers are great |
| 19:56:54 | <[exa]> | Guest|63: whew, is there any logs or error report or so? |
| 19:57:14 | <[exa]> | Heyting: also I recall the last "pop" FP paper I read was about selectives and it was great |
| 19:58:48 | <EvanR> | anything on conal.net |
| 19:59:07 | <[exa]> | +1 ^ |
| 19:59:46 | <c_wraith> | Heyting: Being Lazy With Class (Simon Peyton Jones). The Essence of the Iterator Pattern (Jeremy Gibbons) |
| 20:00:52 | <sclv> | [exa]: maybe you want the validation applicative? |
| 20:00:57 | <c_wraith> | oh, and Lazy Functional State Threads (Jones and several others) |
| 20:01:22 | <Heyting> | Thank you all. Take into consideration I am fresh in Haskell and FP (about a year on and off) and am a CS student, thinking about a PhD in this topic |
| 20:01:38 | × | Guest47 quits (~Guest47@171.79.46.173) (Ping timeout: 260 seconds) |
| 20:01:46 | <c_wraith> | anything from SPJ is easy to read and understand. |
| 20:01:59 | <sclv> | Heyting: there's an old list on the haskell wiki, but since you're interested in classic papers, the "old" is probably not too much a drawback https://wiki.haskell.org/Research_papers |
| 20:02:16 | <[exa]> | sclv: validation collects all Lefts, and I dont really want the error semantics :( |
| 20:02:50 | <[exa]> | ah wait I can smuggle in a Last there |
| 20:03:05 | <sclv> | yeah, just use the Last monoid, :-) |
| 20:03:20 | → | acidjnk joins (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) |
| 20:03:33 | <Heyting> | exa: what do you mean by "the lambdaman" |
| 20:03:54 | <[exa]> | well at least this is going to force me to rewrite all the manual Rights and Lefts into proper wrappers :D |
| 20:04:06 | <sclv> | i assume wadler, who is known for wearing a superman-like shirt in some of his undergrad lectures |
| 20:04:44 | <[exa]> | yep ^ |
| 20:05:17 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 20:06:03 | <[exa]> | OOPSLA'06 now counts as an undergrad lecture? :D |
| 20:06:36 | <[exa]> | Heyting: anyway, scroll down here a bit https://dev.to/adamretter/haskell-io-and-xpath-1fcj |
| 20:06:43 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 20:06:57 | <cheater> | what of smallcheck/smartcheck/etc do you guys like most? |
| 20:09:09 | <Heyting> | yea now I remember him at the end of the propositions-as-types lecture turning into lambdaman |
| 20:11:52 | <EvanR> | what is lambdaman's arch nemesis |
| 20:12:39 | × | Guest|63 quits (~Guest|63@90.203.229.51) (Quit: Connection closed) |
| 20:12:41 | <Heyting> | I guess it would be BoilerPlateMan |
| 20:13:23 | <Heyting> | tearing down lambda expression one AbstractIncrementFunctionFactory at a time |
| 20:13:50 | <ski> | @where Oleg |
| 20:13:51 | <lambdabot> | http://okmij.org/ftp/ |
| 20:14:04 | <ski> | Heyting : ^ has quite a lot interesting stuff |
| 20:14:17 | → | gmg joins (~user@user/gehmehgeh) |
| 20:14:57 | <EvanR> | evocative |
| 20:15:18 | <[exa]> | EvanR: The Imperator, ofc |
| 20:15:56 | <[exa]> | Heyting: this view of java is healthy. |
| 20:16:26 | <EvanR> | java has lambdas now right, boilerplate solved? |
| 20:17:24 | → | talismanick joins (~talismani@2601:200:c100:c9e0::1b0b) |
| 20:18:26 | <Heyting> | ski: this is just what I was looking for, ty |
| 20:19:01 | <ski> | Heyting : the "Lambda the Ultimate: ..." papers (using Scheme) are classics, too |
| 20:19:25 | <ski> | and Henry Baker's paper collection |
| 20:19:42 | → | pavonia joins (~user@user/siracusa) |
| 20:21:29 | <ski> | for Haskell, Graham Hutton has some nice papers on folds and such things, i think |
| 20:21:43 | <ski> | did someone mention "how to make ad hoc polymorphism less ad hoc" ? |
| 20:22:00 | × | shailangsa quits (~shailangs@host86-182-139-4.range86-182.btcentralplus.com) (Remote host closed the connection) |
| 20:22:08 | <ski> | oh, and Phil Wadlers papers are usually quite ejoyable |
| 20:22:27 | <ski> | Erik Meijer |
| 20:23:38 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
| 20:24:43 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 20:24:48 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 20:29:03 | <[exa]> | kinda reminds me, the linear logic&types paper series from Girard and then Wadler was pretty enjoyable |
| 20:29:21 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds) |
| 20:39:12 | <ski> | Girard can be quite fun to read |
| 20:43:08 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 20:44:04 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 248 seconds) |
| 20:47:59 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
| 20:50:32 | <sm> | set up and run hoogle in a stack project: https://github.com/simonmichael/hledger/blob/7c8e241383575214e0d0c6b0c56100c89ce02902/Makefile#L807:L813 |
| 20:55:26 | × | td_ quits (~td@83.135.9.48) (Read error: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) |
| 21:00:43 | → | td_ joins (~td@83.135.9.48) |
| 21:03:28 | × | Guest75 quits (~Guest75@178.141.177.81) (Ping timeout: 260 seconds) |
| 21:07:37 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 21:11:19 | × | td_ quits (~td@83.135.9.48) (Ping timeout: 272 seconds) |
| 21:11:22 | × | irrgit_ quits (~irrgit@146.70.27.250) (Quit: Leaving) |
| 21:13:01 | → | td_ joins (~td@83.135.9.48) |
| 21:21:57 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 21:27:06 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 21:27:24 | × | Heyting quits (~Heyting@193.198.16.217) (Remote host closed the connection) |
| 21:27:47 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 21:28:13 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 21:31:04 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 21:31:32 | × | Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 248 seconds) |
| 21:34:17 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 21:35:04 | × | michalz quits (~michalz@185.246.207.218) (Remote host closed the connection) |
| 21:35:57 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 21:37:45 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 255 seconds) |
| 21:39:44 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 21:39:50 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://eg.meansofproduction.biz/eg/index.php/Catalog_of_Internet_Identities) |
| 21:41:05 | × | absence quits (torgeihe@hildring.pvv.ntnu.no) (Ping timeout: 272 seconds) |
| 21:42:07 | AlexNoo_ | is now known as AlexNoo |
| 21:43:51 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 21:44:57 | × | talismanick quits (~talismani@2601:200:c100:c9e0::1b0b) (Ping timeout: 255 seconds) |
| 21:45:24 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds) |
| 21:49:15 | × | cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds) |
| 21:49:40 | → | cheater joins (~Username@user/cheater) |
| 21:52:57 | × | son0p quits (~ff@181.136.122.143) (Remote host closed the connection) |
| 21:55:33 | → | son0p joins (~ff@181.136.122.143) |
| 21:56:35 | <c_wraith> | sclv: I submitted a documentation PR. Let's see what happens! https://github.com/haskell/cabal/pull/8573 |
| 22:02:01 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 22:03:33 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 22:06:33 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds) |
| 22:07:39 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 22:09:09 | <JonathanWatson[m> | does anybody know anything about using the GHC API for dynamic linking? |
| 22:09:33 | <JonathanWatson[m> | I've written this small test https://github.com/jonathanjameswatson/dynlink/blob/main/dynlink/app/Main.hs but I end up getting "mismatched interface file ways (wanted "", got "dyn")" |
| 22:14:46 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 22:14:57 | → | zeenk2 joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 22:15:42 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Read error: Connection reset by peer) |
| 22:15:54 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 22:16:04 | × | jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 22:18:59 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 22:19:05 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:19:44 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 22:20:00 | × | Guest19 quits (~Guest19@c83-248-102-237.bredband.tele2.se) (Quit: Client closed) |
| 22:20:23 | × | zeenk2 quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 246 seconds) |
| 22:20:44 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:22:26 | → | absence joins (torgeihe@hildring.pvv.ntnu.no) |
| 22:25:27 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 22:28:27 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 22:29:51 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:32:43 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 255 seconds) |
| 22:35:10 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 22:37:20 | → | nate3 joins (~nate@98.45.169.16) |
| 22:37:30 | → | zeenk joins (~zeenk@5.12.219.147) |
| 22:37:35 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:39:26 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 22:39:59 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
| 22:41:05 | × | thaumavorio quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in) |
| 22:42:31 | × | nate3 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 22:43:36 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 22:43:59 | → | thaumavorio joins (~thaumavor@thaumavor.io) |
| 22:44:22 | → | sadmax joins (~user@209.205.174.253) |
| 22:47:48 | × | zeenk quits (~zeenk@5.12.219.147) (Ping timeout: 248 seconds) |
| 22:47:51 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 22:48:37 | → | sadmax joins (~user@209.205.174.253) |
| 22:48:56 | → | mmhat joins (~mmh@p200300f1c730762fee086bfffe095315.dip0.t-ipconnect.de) |
| 22:51:14 | → | zeenk joins (~zeenk@5.12.219.147) |
| 22:51:22 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 22:51:32 | × | acidjnk quits (~acidjnk@p200300d6e7137a94f44efb835a8e951f.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 22:51:42 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 22:52:46 | × | zeenk quits (~zeenk@5.12.219.147) (Client Quit) |
| 22:53:03 | → | sadmax joins (~user@209.205.174.253) |
| 22:53:31 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 22:54:09 | → | sadmax joins (~user@209.205.174.253) |
| 22:54:20 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 22:55:17 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 22:56:42 | → | sadmax joins (~user@209.205.174.253) |
| 22:57:53 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 22:58:42 | → | sadmax joins (~user@209.205.174.253) |
| 23:01:25 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 23:01:48 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 23:01:56 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:03:59 | → | sadmax22 joins (~user@209.205.174.253) |
| 23:04:23 | × | sadmax quits (~user@209.205.174.253) (Remote host closed the connection) |
| 23:04:25 | × | sadmax22 quits (~user@209.205.174.253) (Remote host closed the connection) |
| 23:04:27 | → | dsrt^ joins (~dsrt@76.145.185.103) |
| 23:05:53 | × | jtomas quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 246 seconds) |
| 23:16:43 | × | chomwitt quits (~chomwitt@athedsl-351939.home.otenet.gr) (Ping timeout: 272 seconds) |
| 23:19:02 | <cheater> | seriously, no one got any comments on property test libs? |
| 23:19:14 | jinsun | is now known as Guest6364 |
| 23:19:14 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 23:19:14 | × | Guest6364 quits (~jinsun@user/jinsun) (Killed (osmium.libera.chat (Nickname regained by services))) |
| 23:19:14 | jinsun__ | is now known as jinsun |
| 23:19:47 | × | Tuplanolla quits (~Tuplanoll@91-159-69-11.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:25:29 | <monochrom> | Perhaps just Friday inactivity. |
| 23:27:23 | <hpc> | perhaps they are distracted by the fact that "thief" would be an excellent name for a property testing library |
| 23:28:02 | <monochrom> | theft? thest? test? >:) |
| 23:28:12 | <hpc> | thespian |
| 23:28:15 | <hpc> | shakespeare |
| 23:28:18 | <hpc> | there we go, that's the name |
| 23:28:22 | <hpc> | probably not taken yet :D |
| 23:30:51 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 23:34:45 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 23:37:05 | → | causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) |
| 23:38:38 | → | caryhartline joins (~caryhartl@2600:1700:2d0:8d30:b4a8:f86e:ce7e:7321) |
| 23:39:12 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:41:35 | × | causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Ping timeout: 246 seconds) |
| 23:54:17 | <sm> | cheater: since you've been looking at them recently, you could prime the pump educating us.. what are the ones you've found and how many reverse deps do they have |
| 23:54:35 | <sm> | https://packdeps.haskellers.com/reverse |
| 23:54:55 | <sm> | I suspect a quite small proportion of us actually work with property tests |
| 23:55:00 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds) |
| 23:55:40 | → | causal joins (~user@50.35.83.177) |
| 23:56:34 | <geekosaur> | I've heard a few people in here recommending hedgehog over QuickCheck. haven't done anything with either myself although I think there's some QuickCheck tests for xmonad's StackSet written by sjanssen and/or dons |
| 23:58:09 | × | slack1256 quits (~slack1256@191.126.227.201) (Ping timeout: 255 seconds) |
| 23:58:14 | <sm> | hedgehog was has been my choice, from the armchair... but they keep releasing more |
All times are in UTC on 2022-11-04.