Logs on 2023-07-13 (liberachat/#haskell)
| 00:04:24 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 00:04:24 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 00:04:24 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 00:04:30 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 00:10:22 | → | bilegeek joins (~bilegeek@2600:1008:b023:ebcc:e781:815d:405f:74ed) |
| 00:12:31 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 00:12:56 | × | picklejuice quits (~root@172.58.204.173) (Ping timeout: 245 seconds) |
| 00:18:10 | → | picklejuice joins (~root@172.56.216.194) |
| 00:19:41 | → | smalltalkman joins (uid545680@id-545680.hampstead.irccloud.com) |
| 00:20:22 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 00:20:23 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 00:20:23 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 00:20:48 | → | neuroevolutus joins (~neuroevol@2001:ac8:9a:76::1e) |
| 00:24:45 | → | bratwurst joins (~dfadsva@2604:3d09:207f:f650::c680) |
| 00:26:51 | → | eL_Bart0 joins (eL_Bart0@dietunichtguten.org) |
| 00:26:58 | → | heath2 joins (~heath@user/heath) |
| 00:26:58 | → | caubert joins (~caubert@user/caubert) |
| 00:26:59 | → | bgamari joins (~bgamari@64.223.233.113) |
| 00:31:00 | × | bratwurst quits (~dfadsva@2604:3d09:207f:f650::c680) (Remote host closed the connection) |
| 00:31:21 | → | bratwurst joins (~dfadsva@2604:3d09:207f:f650::c680) |
| 00:36:35 | × | bratwurst quits (~dfadsva@2604:3d09:207f:f650::c680) (Ping timeout: 258 seconds) |
| 00:48:10 | × | picklejuice quits (~root@172.56.216.194) (Ping timeout: 250 seconds) |
| 00:48:13 | → | picklejuice joins (~root@172.56.222.50) |
| 00:50:42 | → | d34df00d joins (~d34df00d@2600:1702:4f1b:7c10::e) |
| 00:50:51 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 245 seconds) |
| 00:50:56 | <d34df00d> | Hi! |
| 00:51:26 | <d34df00d> | Let's say I have two megaparsec parsers, p and q. q accepts all that is accepted by p, and then some extra strings. |
| 00:51:37 | <d34df00d> | I need to parse a list of p's followed by a single q. How do I do that? |
| 00:52:10 | → | pickleju1ce joins (~root@c-73-196-164-60.hsd1.nj.comcast.net) |
| 00:52:18 | <d34df00d> | `some p >> q` won't work since that `p` _might_ consume what needs to be consumed by `q` |
| 00:54:02 | × | picklejuice quits (~root@172.56.222.50) (Ping timeout: 246 seconds) |
| 00:55:28 | <d34df00d> | And there's no easy conversion between the types produces by p and q, so I cannot just make q optional and convert the `last` of `some p` into q's type if `optional q` fails. |
| 00:56:03 | <probie> | Are the parsers supplied by someone else? |
| 00:58:23 | <d34df00d> | probie: nope, but they are non-trivial enough that changing them is a sort of last resort thing (and then I'm not even sure it's possible). |
| 00:58:23 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 01:02:58 | <probie> | I don't suppose you can get away with `p >> some ((Right <$> try (q >> eof)) <|> (Left <$> p))` (assuming at least one p and at least one q, and q is the end of input) |
| 01:02:59 | <d34df00d> | Unfortunately it might not be the end of input. |
| 01:02:59 | → | jargon joins (~jargon@184.101.73.95) |
| 01:02:59 | <d34df00d> | As a model example, think of a comma-separated list of sublists, where each sublist is some integers followed by a double (which might be written as, well, an integer, without any dots). |
| 01:05:36 | <d34df00d> | So like "1 2 3 4.2, 10 20 30, 40 50.0" |
| 01:05:36 | <d34df00d> | And let's pretend there is no Integer → Double function. |
| 01:09:16 | × | jargon quits (~jargon@184.101.73.95) (Remote host closed the connection) |
| 01:09:42 | <probie> | `(:) <$> fmap Left p <*> some ((Right <$> try (q <* notFollowedBy p)) <|> (Left <$> p))`? |
| 01:10:02 | hexology- | is now known as hexology |
| 01:10:11 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:10:11 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:10:11 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:10:26 | → | razetime joins (~quassel@117.193.5.76) |
| 01:10:47 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:41 | <d34df00d> | Oh, nice! |
| 01:11:56 | <d34df00d> | I was just looking at notFollowedBy and lookahead and trying to come up with something, but it looks like it does the job! |
| 01:16:50 | → | arahael_ joins (~arahael@1.145.56.143) |
| 01:16:51 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 01:16:56 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:21:46 | × | neuroevolutus quits (~neuroevol@2001:ac8:9a:76::1e) (Quit: Client closed) |
| 01:25:43 | → | falafel joins (~falafel@2603-7000-a700-8710-ff20-0c7b-3a36-fc77.res6.spectrum.com) |
| 01:27:25 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 240 seconds) |
| 01:32:08 | <Clinton[m]> | I'm trying to understand if the structure I have here already exists.... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/d1ef1e294a91154b0aa072dd9a14ae27b214208d>) |
| 01:32:42 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 01:38:00 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Quit: sm[i]) |
| 01:38:40 | → | m21it joins (~m21it@2800:ac:8014:1816:9812:736a:f822:ce6f) |
| 01:41:12 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds) |
| 01:42:52 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 01:44:42 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 01:45:01 | → | Hooloovoo joins (~Hooloovoo@hax0rbana.org) |
| 01:47:40 | → | neuroevolutus joins (~neuroevol@2001:ac8:9a:76::1e) |
| 01:47:40 | <m21it> | Is there somehow reasonable way to derive `Data.Data.Data` instance of the type `T a b` without the constructors of `T a b` being in scope? The package does expose only the type `T a b` and smart constructors. I'm ok with using any means to derive it or write by hand - `TH` or `GHC.Generics`, I just don't know how. |
| 01:47:40 | × | neuroevolutus quits (~neuroevol@2001:ac8:9a:76::1e) (Client Quit) |
| 01:52:26 | × | statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection) |
| 01:59:03 | → | statusbot10 joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 01:59:04 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 01:59:05 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 01:59:05 | → | picklejuice joins (~root@172.56.222.50) |
| 01:59:05 | × | statusbot10 quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection) |
| 01:59:05 | → | statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 01:59:05 | × | mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 245 seconds) |
| 01:59:05 | × | pickleju1ce quits (~root@c-73-196-164-60.hsd1.nj.comcast.net) (Ping timeout: 245 seconds) |
| 01:59:05 | → | curby joins (~curby@cpe-76-183-125-175.tx.res.rr.com) |
| 01:59:05 | <ski> | @hackage ffunctor |
| 01:59:06 | <lambdabot> | https://hackage.haskell.org/package/ffunctor |
| 01:59:13 | → | mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 01:59:23 | <ski> | @help mmorph |
| 01:59:24 | <lambdabot> | help <command>. Ask for help for <command>. Try 'list' for all commands |
| 01:59:29 | <ski> | @hackage mmorph |
| 01:59:29 | <lambdabot> | https://hackage.haskell.org/package/mmorph |
| 01:59:50 | <ski> | Clinton[m] : those seem relevant ? |
| 02:00:10 | <ski> | (you could also search for `HFunctor' which seems to be another related version) |
| 02:00:47 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 02:00:48 | × | puke quits (~puke@user/puke) (Ping timeout: 252 seconds) |
| 02:00:51 | → | Sciencentistguy7 joins (~sciencent@hacksoc/ordinary-member) |
| 02:02:12 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 246 seconds) |
| 02:02:12 | Sciencentistguy7 | is now known as Sciencentistguy |
| 02:02:17 | <ski> | although, with `FFunctor t' you have `t :: (* -> *) -> *', but for your example, you'd want `t' to be polymorphic (so `FFunctor' would be a rank-2 type class, then), namely `t :: (k -> *) -> *' for every `k' |
| 02:05:21 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 246 seconds) |
| 02:07:34 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Quit: sm[i]) |
| 02:11:04 | × | td_ quits (~td@i53870932.versanet.de) (Ping timeout: 252 seconds) |
| 02:12:18 | × | xff0x_ quits (~xff0x@ai086045.d.east.v6connect.net) (Ping timeout: 250 seconds) |
| 02:12:54 | → | td_ joins (~td@i5387091F.versanet.de) |
| 02:13:24 | → | Yurtdejure joins (~Yurtdejur@128.153.220.246) |
| 02:13:45 | × | arahael_ quits (~arahael@1.145.56.143) (Ping timeout: 246 seconds) |
| 02:14:32 | × | thegeekinside quits (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
| 02:15:26 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 02:15:48 | × | Yurtdejure quits (~Yurtdejur@128.153.220.246) (Quit: Leaving.) |
| 02:21:18 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 02:21:19 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 02:21:19 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:22:19 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:24:44 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds) |
| 02:24:56 | [_] | is now known as [itchyjunk] |
| 02:25:34 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 02:30:22 | → | pickleju1ce joins (~root@c-73-196-164-60.hsd1.nj.comcast.net) |
| 02:30:26 | × | razetime quits (~quassel@117.193.5.76) (Ping timeout: 245 seconds) |
| 02:30:26 | × | picklejuice quits (~root@172.56.222.50) (Read error: Connection reset by peer) |
| 02:30:37 | × | JimL quits (~quassel@89.162.16.26) (Ping timeout: 245 seconds) |
| 02:31:37 | → | razetime joins (~quassel@117.193.6.5) |
| 02:33:53 | → | JimL joins (~quassel@89.162.16.26) |
| 02:37:48 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 02:39:32 | × | JimL quits (~quassel@89.162.16.26) (Ping timeout: 245 seconds) |
| 02:39:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:40:52 | → | puke joins (~puke@user/puke) |
| 02:41:59 | × | puke quits (~puke@user/puke) (Max SendQ exceeded) |
| 02:42:28 | → | puke joins (~puke@user/puke) |
| 02:44:43 | × | m21it quits (~m21it@2800:ac:8014:1816:9812:736a:f822:ce6f) (Remote host closed the connection) |
| 02:44:57 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 245 seconds) |
| 02:46:01 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 02:50:51 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 02:58:23 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:00:34 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:00:34 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 03:00:34 | finn_elija | is now known as FinnElija |
| 03:00:35 | × | fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:00:37 | mewra | is now known as mira |
| 03:03:53 | × | tzh_ quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 240 seconds) |
| 03:04:39 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 03:09:22 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 252 seconds) |
| 03:18:54 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 03:20:17 | → | arahael_ joins (~arahael@1.145.2.91) |
| 03:21:00 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 03:27:04 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 03:29:00 | → | notzmv joins (~zmv@user/notzmv) |
| 03:29:32 | × | arahael_ quits (~arahael@1.145.2.91) (Ping timeout: 245 seconds) |
| 03:32:59 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds) |
| 03:38:42 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
| 03:38:47 | → | aforemny_ joins (~aforemny@2001:9e8:6cee:2b00:575d:a630:13ac:5fc5) |
| 03:38:59 | × | aforemny quits (~aforemny@2001:9e8:6cc8:7800:6851:c622:94fb:817b) (Ping timeout: 264 seconds) |
| 03:54:34 | → | bontaq joins (~user@ool-45779b84.dyn.optonline.net) |
| 04:01:46 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 04:07:08 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 04:08:07 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:11:11 | → | cassiopea joins (~cassiopea@user/cassiopea) |
| 04:11:42 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 252 seconds) |
| 04:16:37 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 04:20:25 | × | XliminalX quits (~goirc@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) (Remote host closed the connection) |
| 04:21:41 | → | XliminalX joins (~goirc@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) |
| 04:25:16 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 04:30:21 | → | biberu joins (~biberu@user/biberu) |
| 04:30:36 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 04:39:14 | <sm> | hey all. What function picks the first result of applying a monadic action to a sequence, like Monad m => (a -> m b) -> [a] -> b ? And why doesn't hoogle find anything for that type signature ? |
| 04:41:46 | <sm> | aha, should be (a -> m b) -> [a] -> m b |
| 04:44:36 | <[Leary]> | sm: Maybe you want `asum . fmap`? |
| 04:44:55 | <sm> | thanks.. no I really just want the first |
| 04:47:08 | <[Leary]> | Err. `foldr1 (<*) . fmap` then? I doubt you'd find that exposed by a library. |
| 04:49:27 | <Axman6> | that's not quite the same right? that will execute the function on all inputs, I assume youy want shortcutting |
| 04:53:16 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 04:53:17 | × | hgolden_ quits (~hgolden@2603-8000-9d00-3ed1-7b72-5998-97ad-985d.res6.spectrum.com) (Quit: Leaving) |
| 05:01:20 | <sm> | right, I went with: |
| 05:01:20 | <sm> | case mapM (findError ...) as of |
| 05:01:20 | <sm> | Just (err:_) -> Left err |
| 05:01:20 | <sm> | _ -> Right () |
| 05:06:08 | <ski> | sm : do you only want `Left', in case `findError ...' gives a `Just' for *every* element of `as' ? |
| 05:06:46 | <sm> | I only want to find the first Just, and transform it to a Left |
| 05:07:06 | <sm> | to report just the first error |
| 05:07:31 | <ski> | what if `map (findError ...) as = [Just err,Nothing,...]', do you still want `Left err' ? |
| 05:08:35 | <ski> | (because that's not what your snippet just above does. it'll only give `Left' if *every* `findError ...' call gives a `Just') |
| 05:10:28 | <monochrom> | asum |
| 05:10:29 | <ski> | if you want to abort on first found error (if any), then use `Either Err' (and have `findError ...' give `Left err', not `Just err' .. or convert, using `maybe (Right ()) Left :: Maybe Err -> Either Err ()') |
| 05:11:36 | <sm> | ski: argh, thanks! I meant to write (Just err : _) -> ... |
| 05:11:41 | <jade[m]> | <sm> "hey all. What function picks the..." <- just based off of the description it sounds like you want `foo f = f . head` which seems way too trivial? |
| 05:11:53 | <jade[m]> | im sure im just not reading it right |
| 05:12:18 | <ski> | yea, i guess `asum' would also work |
| 05:12:31 | <Axman6> | m definitely need to be more constrained, or the function needs to return more than just b |
| 05:12:37 | sm | tried to write the stupid version, and still hasn't grokked the types |
| 05:13:15 | → | trev joins (~trev@user/trev) |
| 05:13:21 | <ski> | sm : well, in that case, did you also mean to write `map' rather than `mapM' ? |
| 05:13:45 | <ski> | (also, btw, the brackets in `(Just err : _) -> ...' are redundant) |
| 05:14:21 | <sm> | hmm.. didn't I get it right ? (It's working so far) |
| 05:15:00 | <sm> | HLS infers that mapM's type as ([Posting] -> Maybe String) -> [[Posting]] -> Maybe [String] |
| 05:15:16 | <ski> | just saying that if you change the type of your pattern, perhaps you meant to adapt the expression being scrutinized, as well (unless you intend for that `mapM' to run in the list monad, rather than `Maybe' monad ?) |
| 05:15:48 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 05:16:00 | <sm> | here's the full function:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/614ab24356285cbeebce3e92d06d954ad91e8f8a>) |
| 05:16:58 | <ski> | (in which case, i guess, `as' is not a list, but a `Maybe') |
| 05:17:08 | <ski> | @type \f as -> mapM f as :: [Maybe String] |
| 05:17:09 | <lambdabot> | (a -> [String]) -> Maybe a -> [Maybe String] |
| 05:17:20 | <ski> | @type \f as -> mapM f (as :: Maybe String) :: [Maybe String] |
| 05:17:21 | <lambdabot> | (String -> [String]) -> Maybe String -> [Maybe String] |
| 05:17:59 | <sm> | (and: findRecentAssertionError :: Day -> [Posting] -> Maybe String) |
| 05:18:34 | <sm> | I think it's ok |
| 05:19:04 | <jade[m]> | sm: > <@simonmic:matrix.org> here's the full function:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/089823d8766ee567fc1c985261ab426b623f2ad0>) |
| 05:19:17 | <sm> | gah: "ERROR: please avoid regexps larger than 300 characters, they trigger a memory leak in regex-tdfa" |
| 05:19:55 | <sm> | I added this message long ago, I wonder if it's still true |
| 05:19:57 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
| 05:19:58 | <ski> | sm : that will *only* give `Left err', if *all* elements of `acctps' (which should contain at least one element) give a `Just' |
| 05:19:59 | <chreekat> | Lol |
| 05:20:39 | <ski> | sm : if you intended to get a `Left err', if at *least* one of the `acctps' gives a `Just', then you need to rethink |
| 05:21:09 | <jade[m]> | oh |
| 05:21:26 | <sm> | ski: hmm, as you were saying. Ok, it's subtle and I guess I have missed it (twice). Thank you. I'll rethink |
| 05:21:51 | <sm> | it's working, but I suppose accidentally |
| 05:22:47 | <ski> | sm : fixes : use `Either String ()' as result of `findRecentAssertionError' (or convert the result to that, using `maybe'). or use `asum' as also suggested |
| 05:23:45 | → | catch22 joins (~catch22@204.40.96.58.static.exetel.com.au) |
| 05:24:09 | <sm> | won't asum "sum" (concatenate) the strings ? |
| 05:24:42 | <ski> | > asum [Nothing,Just "foo",Nothing,Just "bar"] |
| 05:24:43 | <lambdabot> | Just "foo" |
| 05:25:11 | <sm> | aha! Well thanks to the asum suggesters! |
| 05:25:31 | <ski> | `asum' is probably the simplest, for your (existing) situation |
| 05:25:35 | <jade[m]> | sm: same meaning of "sum" as in sum-type I believe |
| 05:26:07 | <ski> | @type asum -- no contraint on element type `a' itself |
| 05:26:08 | <lambdabot> | (Foldable t, Alternative f) => t (f a) -> f a |
| 05:26:09 | <sm> | asum: "The sum of a collection of actions using (<|>), generalizing concat." |
| 05:26:36 | <ski> | @type msum |
| 05:26:37 | <lambdabot> | (Foldable t, MonadPlus m) => t (m a) -> m a |
| 05:28:00 | <sm> | I find it rather hard to connect this abstract doc with "what will it do to a list of Maybes ?" |
| 05:28:02 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 05:29:00 | <sm> | "concat" would seem to imply keeping all the values |
| 05:29:31 | <sm> | "sum" seems to imply aggregate all the values |
| 05:30:12 | <sm> | never mind, onward |
| 05:30:14 | <ski> | i believe it's "sum", because of the names "mzero","mplus" |
| 05:32:26 | <Axman6> | Is it bad that I'm finding myself wanting dependant types in python? I really want to represent the size of something in its type |
| 05:32:30 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 250 seconds) |
| 05:32:31 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 245 seconds) |
| 05:33:11 | × | falafel quits (~falafel@2603-7000-a700-8710-ff20-0c7b-3a36-fc77.res6.spectrum.com) (Ping timeout: 246 seconds) |
| 05:33:32 | → | erisco joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 05:35:35 | → | acidjnk joins (~acidjnk@p200300d6e7072f1890d33f2b4a36e93a.dip0.t-ipconnect.de) |
| 05:36:24 | → | thegeekinside joins (~thegeekin@189.217.90.138) |
| 05:38:08 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 250 seconds) |
| 05:38:33 | → | erisco joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 05:38:56 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 05:43:22 | × | pickleju1ce quits (~root@c-73-196-164-60.hsd1.nj.comcast.net) (Ping timeout: 252 seconds) |
| 05:43:26 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:46:00 | → | takuan_dozo joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:46:01 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
| 05:52:00 | × | erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 250 seconds) |
| 05:53:02 | → | erisco joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 05:57:57 | × | thegeekinside quits (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
| 05:59:38 | <dminuoso> | sm | [05:28:00] I find it rather hard to connect this abstract doc with "what will it do to a list of Maybes ?" |
| 05:59:58 | <dminuoso> | This applies to pretty much any typeclass that doesnt capture a specific behavior, but just loosely collects things that all follow similar laws. |
| 06:00:41 | → | mncheck joins (~mncheck@193.224.205.254) |
| 06:00:42 | <dminuoso> | It's largely why Monad is so difficult to absord. You cant figure out what instances do just from staring at the laws. |
| 06:01:16 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 245 seconds) |
| 06:01:50 | <Clinton[m]> | ski: yep they were actually thank you. I was already using `barbies` elsewhere, I realised I could just add a `bmap` instance.... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/2c5f78e51c18cdf5c7a37ae85b46d33c0fa687ec>) |
| 06:03:31 | <sm> | dminuoso: usually in this situation I would click on the relevant typeclass, and from there to the concrete type's implementation to see what it does. I wasn't able to do that this time |
| 06:03:32 | <sm> | bit of a documentation and dev experience challenge |
| 06:04:40 | <dminuoso> | I think it leads to frustrating and bad UX if looking up the implementation is whats required to understand an interface. |
| 06:05:14 | <sm> | indeed, not having to do that would be even better. In good cases, the concrete type has a haddock saying what it does |
| 06:05:38 | <dminuoso> | While in haddock you could in principle attach some text to the instance, it would be more useful if you could just select an instance and it would display haddock strings attached to the methods instead. |
| 06:05:51 | <dminuoso> | And a universe in which methods were thoroughly documented. |
| 06:06:02 | <sm> | YES |
| 06:06:45 | <sm> | (For the record, I settled on this, finding it clearer than asum): |
| 06:06:45 | <sm> | in case mapMaybe (findRecentAssertionError today) acctps of |
| 06:06:45 | <sm> | [] -> Right () |
| 06:06:45 | <sm> | firsterr:_ -> Left firsterr |
| 06:08:01 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 06:08:53 | <dminuoso> | sm: You could also traverse over the thing. |
| 06:09:03 | <dminuoso> | I feel like that might capture the behavior better |
| 06:09:42 | <sm> | oh, eg ? |
| 06:11:17 | <sm> | just s/mapMaybe/traverse/ ? |
| 06:11:22 | <dminuoso> | sm: So turn findRecentAssertionError into producing `Either Err ()`, then the whole thing becomes just a `traverse (findRecentAssertionError today) acctps` |
| 06:11:44 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 06:12:19 | <dminuoso> | Because `Either T` under Monad behaves an exception effect, aborting on the first T |
| 06:13:01 | <ski> | Clinton[m] : hm, surprised that seems to work with `NoTypeInType' |
| 06:13:09 | <sm> | I see. Still, ilke asum, I find it a little non-obvious to the average reader/would-be-contributor that traverse will pick the first Just here. mapMaybe at least has a clear doc and the firsterr name also helps |
| 06:13:35 | <ski> | (i dunno about a way to generate the boilerplate. `Generic' might work, i suppose, or else TH) |
| 06:13:39 | <sm> | s/Just/error/ |
| 06:13:50 | <dminuoso> | sm: well, rename findRecentAssertoin error into `assertNoError` |
| 06:13:56 | <dminuoso> | Or some such |
| 06:14:26 | <dminuoso> | `traverse (assertNoError today) acctps` reads fine to me. |
| 06:14:42 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 06:14:50 | <dminuoso> | or `for_ acctps (assertNoErr today)` |
| 06:14:57 | <sm> | you would read that and think "this will evaluate to the first error" ? |
| 06:15:19 | <dminuoso> | sm: To me it reads like something that goes over all acctps and checks that there are no errors. Thats the intent. |
| 06:15:28 | <dminuoso> | What this does internally is something I can discover easily if I cared enough. |
| 06:15:36 | <Clinton[m]> | ski: yeah, just needs `DataKinds`. I think the `singletons` library does the job. It's just a bit more generalised than my use case, so it took me a while to work out how to apply it. I'll apparently need to quasi-quote the data type definition to general the singleton template Haskell but that's fine in my use case. |
| 06:15:37 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 245 seconds) |
| 06:15:41 | <ski> | dminuoso : yea, i suggested `Either Err ()' (with `mapM', which sm was initially using), and others suggested `asum' (on `Maybe Err') |
| 06:16:18 | <ski> | sm : `mapMaybe' looks fine, to me |
| 06:16:49 | <dminuoso> | I guess it depends on established code styles. I relatively heavy use of `traverse`. |
| 06:17:21 | <ski> | mhm, Clinton[m] |
| 06:17:25 | <sm> | yup. I want this to be readable to non-expert haskellers (and myself next year) |
| 06:17:26 | <dminuoso> | But I do have plenty of `wither` (generalized form of mapMaybe) as well. :) |
| 06:17:39 | <sm> | well thanks for the input all. This might get refactored later, but not today, I spent too much time on it. |
| 06:17:59 | <dminuoso> | Happy to bikeshed. :) |
| 06:18:08 | <sm> | I had tests passing and was ready to push this bug, and it would have been a pain to track down much later. ski and #haskell FTW!! |
| 06:18:45 | × | nick4 quits (~nick@2600:8807:9084:7800:8939:f628:ed3d:955) (Ping timeout: 246 seconds) |
| 06:19:36 | → | neuroevolutus joins (~neuroevol@2001:ac8:9a:76::1e) |
| 06:31:02 | × | matijja quits (~matijja@193.77.181.201) (Ping timeout: 252 seconds) |
| 06:31:02 | × | Philonous quits (~Philonous@user/philonous) (Ping timeout: 252 seconds) |
| 06:31:16 | × | mncheck quits (~mncheck@193.224.205.254) (Read error: Connection reset by peer) |
| 06:31:46 | × | cassiopea quits (~cassiopea@user/cassiopea) (Ping timeout: 252 seconds) |
| 06:32:08 | × | mmaruseacph2 quits (~mihai@mihai.page) (Ping timeout: 252 seconds) |
| 06:32:35 | → | jonathan joins (~jonathan@c83-252-3-92.bredband.tele2.se) |
| 06:32:35 | → | Philonous_ joins (~Philonous@user/philonous) |
| 06:32:35 | → | mncheck-m joins (~mncheck@193.224.205.254) |
| 06:32:35 | → | cassiope1 joins (~cassiopea@user/cassiopea) |
| 06:32:35 | → | mmarusea1ph2 joins (~mihai@mihai.page) |
| 06:32:49 | → | matijja joins (~matijja@193.77.181.201) |
| 06:38:10 | → | hgolden joins (~hgolden@2603-8000-9d00-3ed1-7b72-5998-97ad-985d.res6.spectrum.com) |
| 06:40:43 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Quit: λ) |
| 06:40:57 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 06:40:57 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 06:40:57 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 06:41:12 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 06:41:40 | → | michalz joins (~michalz@185.246.207.215) |
| 06:41:55 | × | ft quits (~ft@p3e9bcafd.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 06:42:42 | → | titibandit joins (~titibandi@user/titibandit) |
| 06:43:43 | → | ft joins (~ft@p3e9bc835.dip0.t-ipconnect.de) |
| 06:50:45 | → | fendor joins (~fendor@2a02:8388:1640:be00:bfd6:9a8f:d4f6:3a03) |
| 06:51:28 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Quit: sm[i]) |
| 06:55:19 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 06:56:33 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 07:00:38 | × | catch22 quits (~catch22@204.40.96.58.static.exetel.com.au) (Quit: Leaving) |
| 07:01:02 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 07:02:05 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1) |
| 07:02:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:03:48 | × | bilegeek quits (~bilegeek@2600:1008:b023:ebcc:e781:815d:405f:74ed) (Quit: Leaving) |
| 07:05:16 | → | Guest9190 joins (~finn@176-151-21-224.abo.bbox.fr) |
| 07:15:05 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:20:17 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 07:21:02 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 07:21:53 | → | gurkenglas joins (~gurkengla@dynamic-002-247-240-129.2.247.pool.telefonica.de) |
| 07:22:42 | → | fweht joins (uid404746@id-404746.lymington.irccloud.com) |
| 07:24:09 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Quit: λ) |
| 07:25:11 | <arahael_> | I'm attempting to create a new monad, just to try and relearn some of my old haskell, however, I want this monad to effectively "concat" every result it has, however, I'm not sure how to get access to the Semigroup instance: |
| 07:25:15 | <arahael_> | What I have: instance Monad HtmlElementS where |
| 07:25:40 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 252 seconds) |
| 07:26:34 | <arahael_> | HtmlElementS is a type where I would like it to contain just HtmlElement, but because I need HtmlElementS to have type '* -> *' for some reason (Not entirely sure why...), I have to leave it underspecified. Which means the monad instance has to be fully generic. How can I otherwise make it instead be: instance Monad (HtmlElementS HtmlElement) where ... ? |
| 07:27:26 | <arahael_> | Because without knowing that the type is HtmlElement, I can't access it's Semigroup instance. |
| 07:28:32 | Wstfgl0 | is now known as Me-me |
| 07:28:36 | × | Me-me quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Changing host) |
| 07:28:36 | → | Me-me joins (~me-me@user/me-me) |
| 07:28:43 | <dminuoso> | arahael_: The why is really hard to explain beyond just looking at |
| 07:28:46 | <dminuoso> | % :t (>>=) |
| 07:28:46 | <yahb2> | (>>=) :: Monad m => m a -> (a -> m b) -> m b |
| 07:28:55 | <dminuoso> | % :t return |
| 07:28:56 | <yahb2> | return :: Monad m => a -> m a |
| 07:29:10 | <dminuoso> | Note that the quantification is a bit misleading here. |
| 07:29:20 | <dminuoso> | Assume you are writing an instance for a particular type called T. |
| 07:29:24 | <dminuoso> | Then you have: |
| 07:29:36 | <dminuoso> | (>>=) :: forall a b. T a -> (a -> T b) -> m b |
| 07:29:55 | <dminuoso> | arahael_: Can you see how fundamentally this is about parameterized types that you cant/dont control? |
| 07:30:25 | <arahael_> | I think so, so there's no way for me to say something like, "Define this as an instance of Monad whenever a and b have a Semigroup instance?" |
| 07:30:29 | × | Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (Ping timeout: 258 seconds) |
| 07:30:45 | <dminuoso> | arahael_: Maybe start from the beginning. The desire to make it a Monad instance seems strange. |
| 07:30:47 | <arahael_> | Because if I could say that, then that'd be a different type quantification? |
| 07:30:52 | <dminuoso> | Why do you insist on making a Monad instance? |
| 07:31:32 | <arahael_> | dminuoso: It is a bit strange, yeah. What I'm attempting to do is define a nice little DSL that makes it easy to code generate an HTML document. Not sure if it's something pragmatic, it's just a useful excercise to explore haskell with. |
| 07:32:34 | <arahael_> | So basically I want to be able to do something like: html = do h1 "The Title"; p "This is the first paragraph"; etc... |
| 07:32:52 | <dminuoso> | Okay. So the Monad wish comes from wanting to write this inside do-notation? |
| 07:32:58 | <arahael_> | Basically, yeah. |
| 07:33:01 | <dminuoso> | Okay thats fine |
| 07:33:24 | <dminuoso> | arahael_: So consider this example why it must be parametrized: |
| 07:33:25 | <arahael_> | It also came from observing that 'Free monads" are apparently great for defining DSL's like that. Except I don't really understand how to define those either. |
| 07:33:32 | <dminuoso> | You could write: a <- pure '1' |
| 07:33:50 | <dminuoso> | Whether you actually want to write that or not is irrelevant. If you make it Monad, that interface must be supported. |
| 07:33:52 | <dminuoso> | Similarly: |
| 07:34:03 | <dminuoso> | `a <- yourHTMLbuilderMonad` in general must be something sensible |
| 07:34:11 | <ski> | perhaps you could make an output/logging/writer monad |
| 07:34:41 | <ski> | i guess, `Writer HtmlElement' or so |
| 07:35:42 | <arahael_> | dminuoso: Trouble is, right now, the `a <- yourHtmlBuilderMonad` only returns the last item because my `>>=` is just: HtmlElementS a >>= f = f a |
| 07:36:12 | <dminuoso> | arahael_: What Im rather saying is, a monad has some (generalized/rough) notion of "result" that each action can embody. |
| 07:36:17 | <ski> | you've defined `newtype HtmlElementS a = HtmlElementS a' ? |
| 07:36:23 | <arahael_> | ski: Yes. |
| 07:36:35 | <dminuoso> | arahael_: Perhaps start with what ski recommended wrt output/logging/writer. |
| 07:36:40 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 07:36:40 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 07:36:40 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 07:36:46 | <ski> | how about `data HtmlElementS a = MkHtmlElementS HtmlElement a' ? |
| 07:37:13 | → | titiband1t joins (~titibandi@user/titibandit) |
| 07:37:13 | <dminuoso> | ski: Mmm, that wont be enough sensibly, you need a zipper at least. |
| 07:37:14 | <ski> | (which is basically equivalent to `type HtmlElementS = Writer HtmlElement') |
| 07:37:17 | <arahael_> | ski: I did think about just using a state monad, but I wanted to figure out how to *define* this. |
| 07:37:41 | <ski> | why state ? |
| 07:37:45 | <ski> | dminuoso : why zipper ? |
| 07:38:07 | <dminuoso> | ski: In most conceivable scenarios for HTML building, you will not just want a list of HTML tags, but probably build a tree of things. |
| 07:38:13 | <ski> | anyway, nothing stopping you from explicitly giving the `Monad' instance |
| 07:38:32 | <dminuoso> | But I guess you can also just do things like nested do-blocks with this style |
| 07:38:33 | <ski> | dminuoso : could be fixed with an auxilary combinator ? |
| 07:38:52 | <arahael_> | dminuoso: I'm currently looking up resources that might guide me towards knowing how to *implement* the writer monad. |
| 07:39:05 | <ski> | well, i mean, like `p' and similar could gather up and put in a substructure |
| 07:39:20 | <ski> | (so `HtmlElement' would be the tree type, then) |
| 07:39:41 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 258 seconds) |
| 07:39:41 | <dminuoso> | arahael_: Writer monad really isnt much more than just a tuple. |
| 07:40:08 | <dminuoso> | arahael_: The idea is that one element is some sort of 'log' that you can append things into, together with some sort of action result type. |
| 07:40:15 | <arahael_> | dminuoso: Sounds like the *monad* is building the value, then? I was trying to make it the HtmlElement itself build the value? |
| 07:40:33 | <ski> | arahael_ : output/logger/writer is just : concatenate/combine output from parallel computations |
| 07:40:53 | <dminuoso> | arahael_: The building isnt the "monad", the building happens in the combinators. |
| 07:41:40 | <dminuoso> | If we take a tuple over some log we append to, then (>>=) becomes isomorphic to: (Log, a) -> (a -> (Log, b)) -> (Log, b) |
| 07:41:41 | <ski> | arahael_ : you wanting to use `do' means that `(>>=)' (and `(>>)') will be called under the covers. that does the plumbing of combining the output log from all parts of the computation, into a single one |
| 07:41:59 | <dminuoso> | arahael_: And if you stare at that type signature for just a minute, you might begin to realize how silly simple the idea really is. |
| 07:42:11 | <ski> | (logA,a) >>= k = (logA <> logB,b) |
| 07:42:12 | → | chele joins (~chele@user/chele) |
| 07:42:13 | <ski> | where |
| 07:42:17 | <ski> | (logB,b) = k a |
| 07:42:53 | × | titiband1t quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 07:42:54 | <dminuoso> | Oh, I guess I elided a Monoid constraint on `a` (which technically just needs to be Semigroup there, but oh well) |
| 07:42:58 | <ski> | (logA,_) >> (logB,b) = (logA <> logB,b) -- the simpler case |
| 07:43:02 | <arahael_> | dminuoso: Yeah, about that... |
| 07:43:02 | <dminuoso> | err Log! |
| 07:43:09 | <arahael_> | dminuoso: How do you get access to that constraint? |
| 07:43:19 | <dminuoso> | arahael_: In this particular example its assumed to already exist on Log. |
| 07:43:26 | <arahael_> | dminuoso: How!? |
| 07:43:31 | <dminuoso> | `instance Monoid Log` |
| 07:43:39 | <arahael_> | Ah, for MOnoid, yeah. |
| 07:43:46 | <arahael_> | But Monad requires a * -> * type. |
| 07:43:55 | <arahael_> | So there's no way it knows about "Log", rihgt? |
| 07:43:58 | <arahael_> | *Right? |
| 07:43:58 | <ski> | yes ? |
| 07:44:00 | <ski> | no need |
| 07:44:07 | carbolymer_ | is now known as carbolymer |
| 07:44:12 | <ski> | it's `Log', not `a', which needs `Semigroup'/`Monoid' |
| 07:44:26 | <ski> | (`Monoid' is needed for `return'/`pure') |
| 07:44:34 | <arahael_> | In my case I've already defined the Semigroup instance for HtmlElement, but HtmlElementS can't know about it. |
| 07:44:35 | → | Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi) |
| 07:45:27 | <ski> | `a' is just whatever custom "monadic result type" that the user of your `HtmlElementS' monad will use. you don't really need to care about it, apart from plumbing it around correctly. `a' is not the logging type (`HtmlElement' in your case) |
| 07:46:18 | <ski> | arahael_ : "but HtmlElementS can't know about it" -- of course it can know about it, as long as `instance Semigroup HtmlElement where ...' is either in the same module, or in a module which is (transitively) imported into your module |
| 07:46:28 | <arahael_> | It is in the same module. |
| 07:47:05 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds) |
| 07:47:05 | aforemny_ | is now known as aforemny |
| 07:47:11 | × | neuroevolutus quits (~neuroevol@2001:ac8:9a:76::1e) (Quit: Client closed) |
| 07:47:13 | <arahael_> | But I mean, I can't do antyhing like: data HtmlElementS = HtmlElementS HtmlElement; because I need to keep that type parameter in there. |
| 07:47:44 | <ski> | if you'd be using `Writer', then this would be `instance Monoid w => Monad (Writer w)'. in the `Monad' instance, considering `Writer w a', you're not allowed to add any constraints to *`a'* .. but you *are* allowed to add constaints for `w' (`HtmlElement' in your case) |
| 07:48:10 | → | CiaoSen joins (~Jura@2a05:5800:295:7d00:664b:f0ff:fe37:9ef) |
| 07:48:57 | <arahael_> | I need to go soon, is there some good reading material that I should go through for this? I'm already wanting to look up the code for 'Writer', but I'm noticing that most of the examples in Hoogle seem to be based on Monad transformers, which is a complication I dont yet want to figure out. |
| 07:48:59 | <ski> | (but since `HtmlElement' is a type constant, not a type variable, there's no need to say `instance Monoid HtmlElement => Monad HtmlElementS where ...'. because `instance Monoid HtmlElement' is already known, we can remove the (redundant) explicit constraint `Monoid HtmlElement => ' from the former instance declaration) |
| 07:49:15 | <ski> | @where Typeclassopedia |
| 07:49:15 | <lambdabot> | http://www.haskell.org/haskellwiki/Typeclassopedia |
| 07:49:20 | <ski> | @where AAM |
| 07:49:20 | <lambdabot> | http://www.haskell.org/haskellwiki/All_About_Monads |
| 07:49:54 | <ski> | those should talk about `Writer w a', which is what's relevant here |
| 07:51:11 | <arahael_> | I think that's a great page for me to spend some time understanding, I should head off for my thing and then get back to reading that page, and probably implement a bunch of those monads myself before trying to do something fancy with a new monad type. |
| 07:51:54 | <ski> | yes. implementing yourself will probably help. also try to make some example usage as well, using them to solve some simple task |
| 07:52:21 | <arahael_> | Thanks ski, (and thanks dminuoso, for explaining why the types just didn't work how I wanted it, too!) :) |
| 07:52:36 | <arahael_> | ski: I think I'll do exactly that. :) |
| 07:52:52 | <ski> | @where wadler-monads |
| 07:52:53 | <lambdabot> | Monad(ic (, idiomatic/applicative and arrow) effects) introduction papers by Philip Wadler in 1992-01 - 2010 at <https://homepages.inf.ed.ac.uk/wadler/topics/monads.html>. Start from oldest. Perhaps |
| 07:52:53 | <lambdabot> | skip the ones touching upon composable continuations, idioms, constraints, arrows, on a first read |
| 07:53:30 | <arahael_> | I think I'll go through that haskellwiki page first, ,the language there looks reasonably approachable. |
| 07:53:34 | <ski> | you could try some of Wadler's papers (starting from older ones), possibly |
| 07:53:39 | <ski> | Walder tends to be quite readable |
| 07:54:00 | <arahael_> | Ok, well I'll check them out and see whichever ones I want to work through. :) |
| 07:54:01 | <ski> | s/Walder/Wadler/ |
| 07:54:08 | <arahael_> | I do need to go now, though - thanks again for your help! |
| 07:54:14 | <ski> | yw |
| 07:55:08 | <ski> | @where hell-monads |
| 07:55:08 | <lambdabot> | "What the hell are Monads?" by Noel Winstanley in 1999-02 at <https://www-users.mat.umk.pl/~fly/materialy/fp/haskell-doc/Monads.html>. Possibly the first (non-paper) general monad tutorial |
| 07:55:50 | <dminuoso> | Lately Ive been wondering whether these law-centric typeclasses were ever a good idea. |
| 07:57:00 | → | gmg joins (~user@user/gehmehgeh) |
| 07:57:58 | <ski> | hm, guess that link seems to be broken. <https://web.archive.org/web/19991018214519/http://www.dcs.gla.ac.uk/~nww/Monad.html> works, as well as <https://web.archive.org/web/20221208185730/https://www-users.mat.umk.pl/~fly/materialy/fp/haskell-doc/Monads.html> |
| 07:58:28 | <ski> | elaborate ? |
| 07:59:45 | <dminuoso> | So take Monoid for instance. It is an abstract interface that has no clear purpose. |
| 08:00:21 | <ski> | ah, you might be touching upon that there can in general be multiple distinct valid instances ? |
| 08:00:34 | <dminuoso> | Sure, that's half of it. |
| 08:00:44 | <dminuoso> | The other half is that often across the instances, there's no common theme other than really just the laws. |
| 08:01:34 | <dminuoso> | If I asked you "what does <|>" do, you have no choice but to say "anything really, its just about the laws" |
| 08:02:04 | <dminuoso> | Which makes any ad-hoc incantation (where you have an immediate local monomorphization) just hidden code selection. |
| 08:02:05 | <ski> | (also reminds me of occasionally, people, years ago, suggesting something like `class (Functor f,Functor g) => NatTrans f g where natTrans :: f a -> g a' .. which thankfully didn't become a thing) |
| 08:02:37 | <dminuoso> | Say if I write `[1,2] <> [3,4]` Im really just being sneaky, in that the reader cant clearly know what this will do. |
| 08:03:00 | <dminuoso> | You have to specifically know what the Monoid [] instance does, you cant clearly infer the behavior from the laws alone. |
| 08:03:21 | <dminuoso> | Monoid is useful when its used in polymorphic positions say Monad Writer |
| 08:03:53 | <dminuoso> | Or law-centric typeclasses in general |
| 08:04:29 | <ski> | being able to talk about objects in other categories, might perhaps help with part of this |
| 08:04:49 | <dminuoso> | `a >>= f` is quite useless unless you happen know the types involved and the behavior of the monad instance. a `concatMap` f has clear ascribed behavior and behavior. |
| 08:04:59 | <dminuoso> | ascribed behavior and semantics. |
| 08:05:29 | <ski> | (saying `Sum Integer' is a workaround to trying to specify the additive monoid of integers, not as a set/type, but as a monoid) |
| 08:06:10 | <dminuoso> | ski: Well is `getSum (Sum 1 <> Sum 2)` any more useful than `1 + 2`? |
| 08:06:36 | <dminuoso> | Though this is a slightly bad example in that the newtype wrapper very explicitly mentions the behavior |
| 08:07:03 | <ski> | yea .. if you're already in a concrete situation, using a concrete specialization is often preferable. like `map' over `fmap', or `concat' over `join' |
| 08:08:23 | <ski> | well, the point of `Sum' is really to be able to plug in some specific "summarizing" (monoid) behaviour, into some operation that works over any monoid |
| 08:09:01 | → | merijn joins (~merijn@195.114.232.94) |
| 08:09:16 | <ski> | (like traversing some custom tree, perhaps pruning away some subtrees, while summarizing found information, perhaps) |
| 08:09:45 | <dminuoso> | ski: Right. Law-centric typeclasses are primarily useful for writing code that is polymorphic over them. |
| 08:11:20 | <dminuoso> | With Monad it often works because some discipline where only one instance is really ever used. |
| 08:13:15 | <dminuoso> | And in part this is why Monad is such a hard hurdle, mainly because its interface and laws are largely not relevant for someone instantiating m in `Monad m => ...` |
| 08:13:42 | <dminuoso> | Its mainly relevant for people writing polymorphic `forall m. Monad m => ...` code |
| 08:14:08 | → | mmhat joins (~mmh@p200300f1c7114c4cee086bfffe095315.dip0.t-ipconnect.de) |
| 08:14:09 | × | mmhat quits (~mmh@p200300f1c7114c4cee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 08:19:13 | → | danse-nr3 joins (~francesco@151.57.246.23) |
| 08:20:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b51c:90a2:c6ee:ffbb) (Remote host closed the connection) |
| 08:21:57 | × | danse-nr3 quits (~francesco@151.57.246.23) (Read error: Connection reset by peer) |
| 08:22:13 | → | danse-nr3 joins (~francesco@151.47.247.62) |
| 08:24:07 | × | razetime quits (~quassel@117.193.6.5) (Ping timeout: 245 seconds) |
| 08:27:28 | → | titiband1t joins (~titibandi@user/titibandit) |
| 08:27:38 | × | danse-nr3 quits (~francesco@151.47.247.62) (Ping timeout: 252 seconds) |
| 08:28:54 | → | danse-nr3 joins (~francesco@151.54.45.22) |
| 08:30:22 | × | jonathan quits (~jonathan@c83-252-3-92.bredband.tele2.se) (Ping timeout: 245 seconds) |
| 08:31:39 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Quit: sm[i]) |
| 08:32:13 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 08:32:15 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 08:32:20 | → | dcoutts joins (~duncan@195.80.64.243) |
| 08:32:36 | <merijn> | oh fun times |
| 08:32:50 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Client Quit) |
| 08:32:55 | <merijn> | now I need to go update a ton of code because * gets deprecated in kind signatures |
| 08:33:18 | → | misterfish joins (~misterfis@87.215.131.102) |
| 08:34:39 | → | mei joins (~mei@user/mei) |
| 08:35:22 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 08:39:21 | × | titiband1t quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 08:39:43 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 08:39:43 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 08:39:43 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 08:44:55 | <danse-nr3> | i guess you are in good company, wondering whether it can be automated. Just found out about hlint --refactor |
| 08:45:04 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 08:45:25 | × | dcoutts quits (~duncan@195.80.64.243) (Ping timeout: 240 seconds) |
| 08:47:58 | → | razetime joins (~quassel@117.193.6.5) |
| 08:51:14 | <Profpatsch> | I never realized that fmap for Map.Strict is kinda dangerous oO |
| 08:51:20 | <Profpatsch> | It uses the lazy fmap |
| 08:51:41 | <Profpatsch> | So one should always use Map.map or Map.mapWithKey |
| 08:52:16 | <Profpatsch> | hlint should really include a lint that detects the usage of bad instances (maybe it does and I don’t know about it?) |
| 08:52:45 | <Profpatsch> | Like, we already lint for Data.Map -> Data.Map.Strict |
| 08:52:55 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 08:53:04 | <Profpatsch> | containers has an uncanny amount of tripwires :( |
| 08:57:50 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 08:59:42 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 08:59:58 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 09:00:58 | <danse-nr3> | well not really "dangerous" as far as i understand ... just slow |
| 09:04:08 | × | tbidne[m] quits (~tbidnemat@2001:470:69fc:105::3:6d42) (Remote host closed the connection) |
| 09:05:32 | × | danse-nr3 quits (~francesco@151.54.45.22) (Remote host closed the connection) |
| 09:06:55 | → | danse-nr3 joins (~francesco@151.54.45.22) |
| 09:08:17 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:09:30 | × | razetime quits (~quassel@117.193.6.5) (Remote host closed the connection) |
| 09:11:27 | → | razetime joins (~quassel@117.193.6.5) |
| 09:14:24 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:15:47 | × | bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 246 seconds) |
| 09:17:45 | → | jonathan_ joins (~jonathan@ip-185-104-137-43.ptr.icomera.net) |
| 09:18:13 | <Profpatsch> | Yeah that’s dangerous :P |
| 09:20:54 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 09:22:37 | × | ft quits (~ft@p3e9bc835.dip0.t-ipconnect.de) (Quit: leaving) |
| 09:25:01 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
| 09:27:17 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds) |
| 09:30:39 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 09:31:25 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 09:32:32 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds) |
| 09:34:17 | Lord_of_Life_ | is now known as Lord_of_Life |
| 09:35:40 | → | Midjak joins (~Midjak@82.66.147.146) |
| 09:47:56 | → | Wojciech_K joins (~Wojciech_@2a01:4f9:6a:18a8::239) |
| 09:53:21 | → | barcisz joins (~barcisz@31-151-117-10.dynamic.upc.nl) |
| 09:53:32 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:00:37 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 10:02:02 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 10:02:22 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:03:16 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:03:42 | × | jonathan_ quits (~jonathan@ip-185-104-137-43.ptr.icomera.net) (Ping timeout: 245 seconds) |
| 10:04:31 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 10:05:47 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 245 seconds) |
| 10:11:19 | × | infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection) |
| 10:12:25 | → | jonathan_ joins (~jonathan@ip-185-104-137-43.ptr.icomera.net) |
| 10:13:14 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 10:13:26 | → | infinity0 joins (~infinity0@pwned.gg) |
| 10:15:51 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 10:23:42 | × | jonathan_ quits (~jonathan@ip-185-104-137-43.ptr.icomera.net) (Ping timeout: 250 seconds) |
| 10:27:27 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 10:28:01 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 10:29:32 | × | CiaoSen quits (~Jura@2a05:5800:295:7d00:664b:f0ff:fe37:9ef) (Ping timeout: 245 seconds) |
| 10:36:05 | <danse-nr3> | hlint --refactor can do huge amounts of edits by itself, but it has a strange annoying bug where it repeats comments lots of times |
| 10:37:36 | → | __monty__ joins (~toonn@user/toonn) |
| 10:39:33 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 10:39:33 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 10:39:33 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 10:47:01 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 10:47:54 | → | picklejuice joins (~root@c-73-196-164-60.hsd1.nj.comcast.net) |
| 10:51:16 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 245 seconds) |
| 10:57:16 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 10:57:36 | × | buckwheat quits (~buckwheat@209.122.211.192) (Client Quit) |
| 10:58:13 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 10:59:23 | → | jonathan_ joins (~jonathan@c-5eea6678-74736162.cust.telenor.se) |
| 11:00:26 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 11:06:43 | → | xff0x_ joins (~xff0x@2405:6580:b080:900:4b46:1f06:e600:57cc) |
| 11:07:52 | × | razetime quits (~quassel@117.193.6.5) (Ping timeout: 245 seconds) |
| 11:08:37 | → | razetime joins (~quassel@117.193.2.3) |
| 11:09:23 | × | razetime quits (~quassel@117.193.2.3) (Remote host closed the connection) |
| 11:10:44 | → | st4hoo joins (~st4hoo@188.146.127.34) |
| 11:14:51 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 246 seconds) |
| 11:14:55 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 11:14:55 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 11:14:55 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 11:16:03 | → | mechap joins (~mechap@user/mechap) |
| 11:16:55 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:21:17 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds) |
| 11:23:21 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 11:25:02 | → | dibblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 11:25:03 | × | dibblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 11:25:03 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 11:25:55 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:28:00 | → | jsomedon joins (uid606872@id-606872.hampstead.irccloud.com) |
| 11:30:09 | → | mikoto-chan joins (~mikoto-ch@2001:999:780:6f0f:ee7:650:b115:e67d) |
| 11:31:12 | × | jonathan_ quits (~jonathan@c-5eea6678-74736162.cust.telenor.se) (Ping timeout: 245 seconds) |
| 11:36:35 | → | jonathan_ joins (~jonathan@94.234.102.120) |
| 11:37:52 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds) |
| 11:40:07 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 11:41:12 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 240 seconds) |
| 11:43:45 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:43:46 | × | jonathan_ quits (~jonathan@94.234.102.120) (Read error: Connection reset by peer) |
| 11:44:36 | → | jonathan_ joins (~jonathan@host-217-213-130-57.mobileonline.telia.com) |
| 11:48:17 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds) |
| 11:49:10 | → | dobblego joins (~dibblego@116-255-1-157.ip4.superloop.au) |
| 11:49:10 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Read error: Connection reset by peer) |
| 11:49:10 | × | dobblego quits (~dibblego@116-255-1-157.ip4.superloop.au) (Changing host) |
| 11:49:10 | → | dobblego joins (~dibblego@haskell/developer/dibblego) |
| 11:49:28 | dobblego | is now known as dibblego |
| 11:50:42 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 11:52:37 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 11:53:40 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 11:57:45 | → | ddellacosta joins (~ddellacos@146.70.165.140) |
| 11:58:03 | × | st4hoo quits (~st4hoo@188.146.127.34) (Remote host closed the connection) |
| 11:58:27 | → | st4hoo joins (~st4hoo@188.146.127.34) |
| 12:01:26 | → | CiaoSen joins (~Jura@2a05:5800:295:7d00:664b:f0ff:fe37:9ef) |
| 12:03:44 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 12:04:17 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 12:08:42 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 245 seconds) |
| 12:09:01 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 12:11:17 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 12:14:14 | × | danse-nr3 quits (~francesco@151.54.45.22) (Ping timeout: 252 seconds) |
| 12:20:57 | × | mikoto-chan quits (~mikoto-ch@2001:999:780:6f0f:ee7:650:b115:e67d) (Ping timeout: 246 seconds) |
| 12:25:54 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 250 seconds) |
| 12:33:28 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 12:33:29 | → | mikoto-chan joins (~mikoto-ch@2001:999:780:6f0f:ee7:650:b115:e67d) |
| 12:33:32 | × | xff0x_ quits (~xff0x@2405:6580:b080:900:4b46:1f06:e600:57cc) (Ping timeout: 240 seconds) |
| 12:35:45 | → | xff0x_ joins (~xff0x@ai086045.d.east.v6connect.net) |
| 12:37:26 | → | mechap joins (~mechap@user/mechap) |
| 12:37:56 | × | mechap quits (~mechap@user/mechap) (Client Quit) |
| 12:38:04 | × | gurkenglas quits (~gurkengla@dynamic-002-247-240-129.2.247.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 12:38:38 | → | comerijn joins (~merijn@185.143.104.11) |
| 12:39:07 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 12:41:25 | × | merijn quits (~merijn@195.114.232.94) (Ping timeout: 240 seconds) |
| 12:43:12 | × | comerijn quits (~merijn@185.143.104.11) (Ping timeout: 252 seconds) |
| 12:44:51 | × | cods quits (~fred@82-65-232-44.subs.proxad.net) (Quit: leaving) |
| 12:44:53 | → | merijn joins (~merijn@195.114.232.94) |
| 12:45:47 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds) |
| 12:46:05 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 12:46:35 | → | mauke joins (~mauke@user/mauke) |
| 12:49:31 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 12:50:54 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 12:53:51 | → | cods joins (~fred@82-65-232-44.subs.proxad.net) |
| 12:55:33 | <merijn> | And now for the epic journey of converting 4 packages into a single package with multiple public libraries |
| 12:56:51 | → | danse-nr3 joins (~francesco@151.19.253.178) |
| 12:57:36 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 13:02:12 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 240 seconds) |
| 13:05:22 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 245 seconds) |
| 13:09:12 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 13:10:18 | → | bratwurst joins (~dfadsva@2604:3d09:207f:f650::c680) |
| 13:12:14 | <Profpatsch> | wow I just love Haskell; writing tests for a pretty involved csv parser which needs to fetch multiple things from the database in between, moved all database fetchers into a mock record argument, now I can just write a test in `pure` |
| 13:12:44 | <Profpatsch> | Pretty mechanical conversion. I don’t even want to know how brittle this refactor would be in a language with unrestricted side-effects |
| 13:13:01 | <kuribas> | or with crazy mocking practices like python. |
| 13:14:00 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 250 seconds) |
| 13:14:07 | <Profpatsch> | I mean the “pure” handler is still an an `m`, but it’s only MonadIO, MonadThrow and MonadLogger, all of which are available to the test handler |
| 13:15:15 | <Profpatsch> | the non-pure `m` is in MonadPostgres, MonadHttpRequest etc, and also wrapped in a Transaction transformer to run it all atomic on the database |
| 13:15:31 | <Profpatsch> | mtl is amazing |
| 13:15:42 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 13:16:30 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1) |
| 13:18:22 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 13:19:47 | × | bratwurst quits (~dfadsva@2604:3d09:207f:f650::c680) (Ping timeout: 264 seconds) |
| 13:20:02 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 13:20:40 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 13:22:08 | × | st4hoo quits (~st4hoo@188.146.127.34) (Quit: Leaving) |
| 13:22:20 | × | laman3 quits (~laman@rego.ai) (Quit: WeeChat 3.5) |
| 13:22:27 | × | mikoto-chan quits (~mikoto-ch@2001:999:780:6f0f:ee7:650:b115:e67d) (Ping timeout: 245 seconds) |
| 13:24:41 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6cd6:b2b2:8eef:d429) |
| 13:25:47 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 13:25:55 | → | ccapndave joins (~ccapndave@mob-194-230-147-118.cgn.sunrise.net) |
| 13:26:50 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
| 13:28:54 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6cd6:b2b2:8eef:d429) (Ping timeout: 246 seconds) |
| 13:28:56 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 13:31:36 | × | dsrt^ quits (~cd@24.125.210.85) (Remote host closed the connection) |
| 13:32:27 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 13:34:19 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 13:36:09 | → | danse-nr3_ joins (~francesco@151.54.45.22) |
| 13:37:06 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 13:37:16 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 13:37:20 | × | ccapndave quits (~ccapndave@mob-194-230-147-118.cgn.sunrise.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 13:37:46 | × | jsomedon quits (uid606872@id-606872.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 13:38:11 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 13:39:36 | × | danse-nr3 quits (~francesco@151.19.253.178) (Ping timeout: 245 seconds) |
| 13:41:27 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds) |
| 13:42:58 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 13:43:56 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 13:46:52 | → | dcoutts joins (~duncan@195.80.64.243) |
| 13:49:52 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 13:53:10 | × | driib quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
| 13:54:34 | → | driib joins (~driib@vmi931078.contaboserver.net) |
| 13:54:58 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 258 seconds) |
| 13:55:14 | × | jonathan_ quits (~jonathan@host-217-213-130-57.mobileonline.telia.com) (Remote host closed the connection) |
| 13:55:39 | → | jonathan_ joins (~jonathan@host-217-213-130-57.mobileonline.telia.com) |
| 13:59:25 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 13:59:38 | <monochrom> | Profpatsch: Mock testing is driving by parametricity (free theorems): http://www.vex.net/~trebla/haskell/abs-type-param.html :) |
| 14:00:02 | <monochrom> | err s/driving/powered/ |
| 14:00:03 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Client Quit) |
| 14:00:33 | <monochrom> | In fact I am teaching that today in class! |
| 14:01:23 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 14:02:02 | × | barcisz quits (~barcisz@31-151-117-10.dynamic.upc.nl) (Ping timeout: 252 seconds) |
| 14:04:32 | × | mncheck-m quits (~mncheck@193.224.205.254) (Ping timeout: 245 seconds) |
| 14:04:47 | × | acidjnk quits (~acidjnk@p200300d6e7072f1890d33f2b4a36e93a.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 14:05:55 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 240 seconds) |
| 14:11:34 | × | dcoutts quits (~duncan@195.80.64.243) (Ping timeout: 252 seconds) |
| 14:12:07 | × | kitzman_ quits (~kitzman@user/dekenevs) (Quit: C-x C-c) |
| 14:12:18 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 14:12:57 | <yin> | i'm having trouble installing ghc via ghcup on void linux |
| 14:13:16 | <maerwald> | yin: yes |
| 14:13:18 | <maerwald> | sec |
| 14:13:28 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 14:13:29 | <yin> | it hangs on "installing ghc (this may take a while)" |
| 14:13:47 | <maerwald> | musl? |
| 14:14:07 | <yin> | glibc |
| 14:14:28 | <maerwald> | that should work |
| 14:14:42 | <maerwald> | also need: xbps-install -S curl gcc gmp make ncurses ncurses-libtinfo-libs perl |
| 14:15:37 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 245 seconds) |
| 14:15:40 | <yin> | check |
| 14:15:42 | <monochrom> | Will there be a null linux too? :) |
| 14:17:37 | <Profpatsch> | monochrom: the problem I have with statements such as this, is that “mocking” is an intuitive term, not a formal one |
| 14:17:57 | <Profpatsch> | ofc it’s true on an intuitive level, but the formalisms around it are not needed for understanding imo |
| 14:18:13 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 14:18:21 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 14:18:55 | <Profpatsch> | once you give it a formal definition, you can start being more precise, but then the question becomes whether you formal definition corresponds to reality in any meaningful way :P |
| 14:18:57 | → | gmg joins (~user@user/gehmehgeh) |
| 14:19:13 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 14:19:16 | <monochrom> | I think this one does. |
| 14:19:48 | <Profpatsch> | tbh I feel like type classes and higher kinded types help a lot more in Haskell’s case |
| 14:20:00 | <Profpatsch> | you can’t do half of these things in Rust, or Scala |
| 14:20:15 | → | thegeekinside joins (~thegeekin@189.217.90.138) |
| 14:20:16 | <Profpatsch> | or maybe you can, but it amounts to losing some amount of hair |
| 14:20:42 | <Profpatsch> | RankN is also super useful |
| 14:20:58 | <Profpatsch> | like, many refactorings are just not possible in typed languages without these |
| 14:21:39 | <yin> | what's the log file for ghcup ghc install? |
| 14:21:52 | <Profpatsch> | I guess you could replace all type classes with RankN function arguments pretty mechanically, but then you are back to annoying manual work |
| 14:22:31 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 245 seconds) |
| 14:24:11 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 14:25:31 | → | dcoutts joins (~duncan@195.80.64.243) |
| 14:25:50 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 14:26:40 | <yin> | maerwald: it just hangs |
| 14:26:43 | <maerwald> | yin: something in ~/.ghcup/logs |
| 14:26:49 | <maerwald> | run with -v |
| 14:26:57 | <maerwald> | ghcup -v install ghc |
| 14:27:44 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 14:29:23 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 14:30:08 | → | mei joins (~mei@user/mei) |
| 14:30:17 | × | myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Ping timeout: 246 seconds) |
| 14:30:55 | × | michalz quits (~michalz@185.246.207.215) (Ping timeout: 240 seconds) |
| 14:30:57 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 14:33:30 | → | johnw_ joins (~johnw@69.62.242.138) |
| 14:33:33 | × | johnw quits (~johnw@69.62.242.138) (Read error: Connection reset by peer) |
| 14:34:57 | × | dcoutts quits (~duncan@195.80.64.243) (Ping timeout: 245 seconds) |
| 14:35:39 | → | mechap joins (~mechap@user/mechap) |
| 14:35:46 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 14:39:00 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 14:39:34 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 14:42:28 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 14:47:02 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 14:47:52 | → | dcoutts joins (~duncan@195.80.64.243) |
| 14:49:12 | <kuribas> | Profpatsch: can you imagine what you can do in idris with dependent types? |
| 14:49:42 | <kuribas> | Profpatsch: no more annoying newtypes to work around limitations in haskell hkts. |
| 14:51:36 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 14:52:02 | <Profpatsch> | kuribas: no I can’t, wake me when Idris has a performing compiler and somebody has reimplemented all of Snoyberg’s libraries to production quality :) |
| 14:53:58 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 14:56:43 | → | shapr joins (~user@2600:1700:c640:3100:8173:1c9d:ab8d:9a27) |
| 14:58:52 | × | dcoutts quits (~duncan@195.80.64.243) (Ping timeout: 250 seconds) |
| 14:58:52 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 14:59:44 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 15:02:10 | × | merijn quits (~merijn@195.114.232.94) (Ping timeout: 252 seconds) |
| 15:02:15 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.1) |
| 15:04:44 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 15:07:06 | × | jonathan_ quits (~jonathan@host-217-213-130-57.mobileonline.telia.com) (Ping timeout: 245 seconds) |
| 15:09:32 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:10:36 | <kuribas> | it has a performing compiler. |
| 15:10:48 | <kuribas> | It may not be performing very well, but it's performing! |
| 15:11:15 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 15:12:27 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 15:13:03 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 15:16:12 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 15:21:37 | × | driib quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
| 15:21:46 | → | kitzman joins (~kitzman@user/dekenevs) |
| 15:23:03 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 15:23:15 | → | jonathan_ joins (~jonathan@host-217-213-130-57.mobileonline.telia.com) |
| 15:24:41 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6cd6:b2b2:8eef:d429) |
| 15:25:18 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 250 seconds) |
| 15:26:11 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 15:27:27 | × | CiaoSen quits (~Jura@2a05:5800:295:7d00:664b:f0ff:fe37:9ef) (Ping timeout: 245 seconds) |
| 15:27:52 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 15:32:33 | × | jonathan_ quits (~jonathan@host-217-213-130-57.mobileonline.telia.com) (Read error: Connection reset by peer) |
| 15:33:26 | → | trev joins (~trev@user/trev) |
| 15:34:03 | → | jonathan_ joins (~jonathan@host-217-213-130-57.mobileonline.telia.com) |
| 15:34:35 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 15:34:50 | → | acidjnk joins (~acidjnk@p200300d6e7072f18d1756600c61e2eb6.dip0.t-ipconnect.de) |
| 15:36:19 | <kuribas> | And I am not really interested in snoyberg libraries. |
| 15:36:52 | <kuribas> | oh wait, wai is snoyberg right? |
| 15:36:59 | <kuribas> | I do want wai. |
| 15:37:06 | <yin> | maerwald: https://paste.jrvieira.com/1689262618294 |
| 15:37:44 | → | driib joins (~driib@vmi931078.contaboserver.net) |
| 15:37:48 | <maerwald> | yin: what does the log file show |
| 15:37:51 | <yin> | should it be ...fedora27-linuz.tar.xz ? |
| 15:38:00 | <yin> | this is the log file |
| 15:38:46 | <maerwald> | what log files are there |
| 15:38:57 | → | dcoutts joins (~duncan@195.80.64.243) |
| 15:39:00 | <jade[m]> | I recently saw the `Num` instance for `Num b => a -> b` which was super interesting, but also had someone say it was debated whether the instance should be in base |
| 15:39:17 | <yin> | a blank ghc-configure.log and ghcup.log (this) |
| 15:39:30 | <jade[m]> | why is that the case when it is a valid instance and the only one that exists for the type? |
| 15:39:34 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 15:40:33 | <yin> | maerwald: i pasted the tail, here's in full: https://paste.jrvieira.com/1689262817710 |
| 15:40:38 | <geekosaur> | jade[m], because it causes a lot of confusion when you forget a parameter to a function and suddenly ghc can find a match for `Num (a -> b)` |
| 15:41:34 | → | barcisz joins (~barcisz@31-151-117-10.dynamic.upc.nl) |
| 15:41:47 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 15:42:04 | <maerwald> | yin: your configure gets *terminated* |
| 15:42:10 | <maerwald> | selinux or some sh*t? |
| 15:42:27 | <maerwald> | not ghcups fault for sure |
| 15:42:42 | <yin> | just a fresh void linux install on a vm |
| 15:42:54 | <maerwald> | well, termination doesn't happen by accident |
| 15:43:12 | <jade[m]> | geekosaur: that makes sense I suppose |
| 15:43:42 | <jade[m]> | to me it moreso seems like that'd be the issue of the error messages, but iirc you run into theoretical limotations |
| 15:43:59 | <geekosaur> | jade[m], that said, we're seeing more and more confusing instances showing up in base (consider Foldable (a,b)) so it might happen at some point |
| 15:44:46 | <geekosaur> | oh, the error messages are confusing enough even without that instance. they get much worse with it. and type inference means the more rope you give ghc, the more likely it hangs you at some distant point from the error |
| 15:45:18 | <yin> | NoImplicitPrelude ftw |
| 15:46:07 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 15:46:26 | <jade[m]> | thanks for the info :) |
| 15:46:27 | <geekosaur> | actually putting it in base would be safe if it were banished to Data.Function.Num or something that you had to import to get it |
| 15:46:54 | <geekosaur> | I think there's a similar thing for a Show instance for functions |
| 15:47:31 | <jade[m]> | that one's really useless imo |
| 15:47:33 | <geekosaur> | although, then you get the argument that the instance is actually for any Applicative, so should it be Control.Applicative.Num |
| 15:47:45 | <jade[m]> | if the one you are talking about is the `<function>` one |
| 15:47:49 | <geekosaur> | yes, but anything better has annoying constraints |
| 15:48:17 | <yin> | maerwald: i found this https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/366 |
| 15:48:38 | <maerwald> | yin: that's not the same error |
| 15:48:55 | <yin> | it's not but might be a clue? |
| 15:48:56 | <maerwald> | your 'sh ./configure' gets *terminated* |
| 15:48:59 | <maerwald> | no |
| 15:49:08 | <maerwald> | there's a terminator on your system |
| 15:49:42 | <maerwald> | you can try it manually |
| 15:49:50 | <maerwald> | ghcup prefetch ghc |
| 15:50:04 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 15:50:07 | <maerwald> | then: tar xf ~/.ghcup/cache/<tarball> |
| 15:50:51 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 15:51:53 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 15:52:41 | <yin> | it runs for a long time before it get terminated though |
| 15:53:02 | <maerwald> | yeah, something trashed |
| 15:53:51 | <rachelambda> | geekosaur: what's the Show instance for functions? |
| 15:53:54 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 250 seconds) |
| 15:54:36 | × | jonathan_ quits (~jonathan@host-217-213-130-57.mobileonline.telia.com) (Ping timeout: 252 seconds) |
| 15:54:47 | <yin> | Show instance for what now? |
| 15:55:14 | <rachelambda> | that's what I was thinking |
| 15:55:41 | <geekosaur[c]> | As jade[m] said it's just "<function>" |
| 15:55:50 | <lyxia> | https://hackage.haskell.org/package/base-4.18.0.0/docs/Text-Show-Functions.html |
| 15:55:56 | <rachelambda> | ah |
| 15:55:58 | <rachelambda> | thank you |
| 15:56:20 | <geekosaur[c]> | There's a smarter one that shows types but it's monomorphic |
| 15:56:25 | <mauke> | wait, there's a Num Reader instance in base now? |
| 15:57:02 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 15:57:13 | <geekosaur[c]> | No Jade was asking why there wasn't |
| 15:57:29 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 15:58:39 | <yin> | geekosaur[c]: what's with the [c] ? i know [m] is for matrix |
| 15:58:41 | <mauke> | ah, I misunderstood |
| 15:59:41 | <geekosaur[c]> | IRCcloud because I'm on my phone |
| 16:00:22 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:00:50 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:01:41 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 245 seconds) |
| 16:02:18 | → | bontaq joins (~user@ool-45779b84.dyn.optonline.net) |
| 16:02:59 | → | dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
| 16:03:27 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 16:03:30 | → | off^ joins (~cd@24.125.210.85) |
| 16:03:46 | × | danse-nr3_ quits (~francesco@151.54.45.22) (Ping timeout: 245 seconds) |
| 16:04:10 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 16:04:51 | <[Leary]> | jade[m]: The only argument I've seen against that instance is that numeric literals accidentally written in application position e.g. `5 ()` would type check and go unnoticed. |
| 16:05:30 | <mauke> | it can get super confusing |
| 16:05:34 | <jade[m]> | that's a valid concern actually |
| 16:05:38 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 16:05:41 | <mauke> | > (sin + cos) 0.5 |
| 16:05:42 | <lambdabot> | error: |
| 16:05:42 | <lambdabot> | • No instance for (Num (Double -> Double)) |
| 16:05:42 | <lambdabot> | arising from a use of ‘e_105’ |
| 16:06:04 | <jade[m]> | mauke: yeah but that's the part that's actually useful imo |
| 16:06:37 | → | nick4 joins (~nick@2600:8807:9084:7800:f0c8:66b8:cafe:5e4) |
| 16:06:53 | <jade[m]> | [Leary]: any sequence of numbers would also typecheck, right? |
| 16:06:56 | <jade[m]> | i.e. 1 2 3 |
| 16:07:15 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 16:07:24 | <mauke> | @let instance Num a => Num (e -> a) where fromInteger = pure . fromInteger; abs = fmap abs; signum = fmap signum; negate = fmap negate; (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*) |
| 16:07:25 | <lambdabot> | Defined. |
| 16:07:29 | <mauke> | > (sin + cos) 0.5 |
| 16:07:30 | <lambdabot> | 1.3570081004945758 |
| 16:07:42 | <mauke> | > 1 "yeah, so what's this?" sin show |
| 16:07:43 | <lambdabot> | 1 |
| 16:09:17 | <rachelambda> | I wish fromInteger was not a part of Num |
| 16:09:35 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 264 seconds) |
| 16:09:53 | <geekosaur[c]> | Lots of people do |
| 16:10:02 | <rachelambda> | I except it to be a cold take |
| 16:10:10 | <rachelambda> | haha |
| 16:10:44 | <[Leary]> | jade[m]: Yes. Or a number followed by any sequence of arguments. |
| 16:11:07 | <rachelambda> | along with wishing there were AddMonoid, MulMonoid, AddGroup, MulGroup, Ring, Field, etc classes in place of the current bunch of classes |
| 16:11:14 | <rachelambda> | I guess I should just go use a custom prelude |
| 16:11:23 | <jade[m]> | numeric-prelude |
| 16:11:47 | <mauke> | @let instance Num a => Num (IO a) where fromInteger = pure . fromInteger; abs = fmap abs; signum = fmap signum; negate = fmap negate; (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*) |
| 16:11:47 | <rachelambda> | 👍 |
| 16:11:48 | <lambdabot> | Defined. |
| 16:12:16 | <mauke> | finally I can write `readLn + readLn` |
| 16:12:44 | <mauke> | :t readLn + readLn |
| 16:12:45 | <lambdabot> | (Num a, Read a) => IO a |
| 16:13:07 | <jade[m]> | mauke: I feel like this isn't even that bad |
| 16:13:14 | <rachelambda> | @let instance (Num a, Applicative f) => Num (f a) where fromInteger = pure . fromInteger; abs = fmap abs; signum = fmap signum; negate = fmap negate; (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*) |
| 16:13:15 | <lambdabot> | Defined. |
| 16:13:19 | <rachelambda> | haha |
| 16:13:23 | <rachelambda> | slightly cursed |
| 16:13:41 | <rachelambda> | if only there was a way to iterate over any typeclass rather than only Num |
| 16:13:45 | <rachelambda> | to make it truly awful |
| 16:13:48 | <ddellacosta> | Data.Cursed.Slightly |
| 16:14:28 | <int-e> | Data.Cursed.Cursed (re-cursed) |
| 16:14:46 | <ddellacosta> | haha very nice |
| 16:15:23 | <rachelambda> | I think I've seen code like this once trying to implement rank polymorphism as seen in array languages |
| 16:15:42 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 16:15:51 | <yin> | i wish we had this https://www.youtube.com/watch?v=jFk1qpr1ytk |
| 16:16:02 | <mauke> | that instance could be made slightly more confusing by doing fromInteger = fmap pure fromInteger |
| 16:16:04 | <rachelambda> | it's a bit cute using weird instances for Num and the like |
| 16:17:13 | <mauke> | "for many cases Natural numbers retain all of the positive aspects of the Integers with none of the negatives" ohyou.jpg |
| 16:20:12 | <yin> | :) |
| 16:20:47 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 16:24:49 | → | notzmv joins (~zmv@user/notzmv) |
| 16:26:30 | <rachelambda> | naturals are very nice |
| 16:26:32 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:27:28 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 16:29:09 | → | ripspin joins (~chatzilla@1.145.198.92) |
| 16:31:42 | <yin> | Word |
| 16:32:39 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 16:33:34 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 16:35:00 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 16:35:30 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:38:21 | <rachelambda> | "you would say jose but memory is finite, and I would say why are you doing functional programming" |
| 16:38:25 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 240 seconds) |
| 16:38:30 | × | thegeekinside quits (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
| 16:38:58 | × | picklejuice quits (~root@c-73-196-164-60.hsd1.nj.comcast.net) (Ping timeout: 252 seconds) |
| 16:40:59 | → | picklejuice joins (~root@172.56.222.214) |
| 16:43:21 | <yin> | good public speaker |
| 16:45:06 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 16:45:30 | → | razetime joins (~quassel@117.193.3.219) |
| 16:46:27 | → | thegeekinside joins (~thegeekin@189.217.90.138) |
| 16:47:02 | <rachelambda> | yeah, he's great to listen to |
| 16:47:49 | → | falafel joins (~falafel@2603-7000-a700-8710-9d84-55b0-693c-e89b.res6.spectrum.com) |
| 16:49:44 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 16:50:17 | × | Inst_ quits (~Inst@2601:6c4:4081:2fc0:5c21:6c0c:79b0:64a3) (Ping timeout: 246 seconds) |
| 16:50:51 | × | razetime quits (~quassel@117.193.3.219) (Ping timeout: 245 seconds) |
| 16:51:28 | → | razetime joins (~quassel@117.193.5.192) |
| 16:52:32 | → | ars23 joins (~ars23@2a02:2f09:3f14:a200:15ad:aa36:9d5c:6013) |
| 16:53:42 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 245 seconds) |
| 16:53:59 | × | ars23 quits (~ars23@2a02:2f09:3f14:a200:15ad:aa36:9d5c:6013) (Client Quit) |
| 16:54:14 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 16:55:12 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 16:56:37 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 16:57:53 | → | ars23 joins (~ars23@86.120.205.92) |
| 17:00:22 | × | razetime quits (~quassel@117.193.5.192) (Ping timeout: 245 seconds) |
| 17:00:50 | → | razetime joins (~quassel@117.193.2.221) |
| 17:01:12 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 17:02:22 | → | jmd_ joins (~jmdaemon@user/jmdaemon) |
| 17:04:44 | ski | . o O ( `instance (Finite a,Show a,Show b) => Show (a -> b)' ) |
| 17:05:35 | × | migas quits (~migas@astra4961.startdedicated.net) (Remote host closed the connection) |
| 17:05:51 | → | migas joins (~migas@astra4961.startdedicated.net) |
| 17:06:03 | <ski> | (where e.g. `show not = "\\case {False -> True; True -> False}"') |
| 17:07:34 | <rachelambda> | awful, I love it |
| 17:08:09 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 17:12:23 | × | misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 258 seconds) |
| 17:12:29 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 246 seconds) |
| 17:12:52 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 17:13:49 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:15:33 | × | barcisz quits (~barcisz@31-151-117-10.dynamic.upc.nl) (Quit: Connection closed) |
| 17:19:45 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 17:24:57 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 17:27:54 | → | gok joins (~gok@2601:282:d00:2d60:2143:a66f:233:9ea7) |
| 17:31:33 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 17:33:52 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
| 17:35:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:36:16 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 17:37:11 | × | mxs quits (~mxs@user/mxs) (Ping timeout: 264 seconds) |
| 17:37:19 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 17:39:07 | → | mxs joins (~mxs@user/mxs) |
| 17:39:48 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 17:42:06 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 17:43:03 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 17:44:25 | × | razetime quits (~quassel@117.193.2.221) (Ping timeout: 240 seconds) |
| 17:46:59 | → | razetime joins (~quassel@117.193.1.86) |
| 17:47:27 | × | picklejuice quits (~root@172.56.222.214) (Ping timeout: 245 seconds) |
| 17:47:59 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 264 seconds) |
| 17:48:50 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 17:49:04 | → | picklejuice joins (~root@172.56.219.90) |
| 17:50:03 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 17:51:35 | × | razetime quits (~quassel@117.193.1.86) (Ping timeout: 264 seconds) |
| 17:53:27 | → | razetime joins (~quassel@117.193.3.135) |
| 17:53:30 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 250 seconds) |
| 17:54:22 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 250 seconds) |
| 17:56:32 | × | nick4 quits (~nick@2600:8807:9084:7800:f0c8:66b8:cafe:5e4) (Ping timeout: 240 seconds) |
| 17:56:37 | × | jmd_ quits (~jmdaemon@user/jmdaemon) (Ping timeout: 245 seconds) |
| 17:58:42 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 18:00:04 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 18:01:22 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:06:02 | → | razetime_ joins (~quassel@117.193.7.68) |
| 18:06:04 | × | razetime quits (~quassel@117.193.3.135) (Ping timeout: 250 seconds) |
| 18:06:16 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 18:06:50 | × | fendor quits (~fendor@2a02:8388:1640:be00:bfd6:9a8f:d4f6:3a03) (Remote host closed the connection) |
| 18:07:07 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:09:36 | → | jmd_ joins (~jmdaemon@user/jmdaemon) |
| 18:11:41 | × | razetime_ quits (~quassel@117.193.7.68) (Ping timeout: 245 seconds) |
| 18:12:28 | → | razetime joins (~quassel@117.193.1.199) |
| 18:13:12 | → | nick4 joins (~nick@2600:8807:9084:7800:f0c8:66b8:cafe:5e4) |
| 18:14:57 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 18:16:43 | × | aforemny quits (~aforemny@2001:9e8:6cee:2b00:575d:a630:13ac:5fc5) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:16:45 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:17:04 | → | aforemny joins (~aforemny@i59F516E4.versanet.de) |
| 18:17:19 | × | gok quits (~gok@2601:282:d00:2d60:2143:a66f:233:9ea7) (Quit: Client closed) |
| 18:17:47 | × | nick4 quits (~nick@2600:8807:9084:7800:f0c8:66b8:cafe:5e4) (Ping timeout: 246 seconds) |
| 18:21:25 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:5acb:c775:e1cd:3a88) (Ping timeout: 240 seconds) |
| 18:21:37 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 18:22:00 | × | pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-54-65-92-160-253.dsl.bell.ca) (Ping timeout: 252 seconds) |
| 18:28:32 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:29:48 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 18:31:10 | × | jmd_ quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
| 18:32:36 | → | phma_ joins (phma@2001:5b0:211f:7128:594e:98f8:7c9e:d433) |
| 18:33:21 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 18:33:29 | → | Lears joins (~Leary]@user/Leary/x-0910699) |
| 18:34:17 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:34:22 | → | caasih_ joins (sid13241@id-13241.ilkley.irccloud.com) |
| 18:34:28 | × | ripspin quits (~chatzilla@1.145.198.92) (Remote host closed the connection) |
| 18:34:32 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 245 seconds) |
| 18:34:41 | → | chaitlatte0_ joins (ea29c0bb16@2604:bf00:561:2000::1124) |
| 18:34:41 | → | jil` joins (~user@vps-15050500.vps.ovh.net) |
| 18:34:44 | → | lukec_ joins (9dfd4d094e@2604:bf00:561:2000::10e) |
| 18:34:45 | → | bsima1_ joins (9d7e39c8ad@2604:bf00:561:2000::dd) |
| 18:34:45 | → | jkoshy_ joins (99b9359beb@user/jkoshy) |
| 18:34:45 | → | n1essa_ joins (3d621153a5@2604:bf00:561:2000::df7) |
| 18:34:47 | → | ggb_ joins (a62ffbaf4f@2604:bf00:561:2000::3ac) |
| 18:34:52 | → | jakzale_ joins (6291399afa@user/jakzale) |
| 18:34:56 | → | fvr_ joins (ef3e56ca8b@2604:bf00:561:2000::3c4) |
| 18:34:58 | → | arcadewise_ joins (52968ed80d@2604:bf00:561:2000::3df) |
| 18:35:04 | → | fluffyballoon_ joins (45ce440a48@2604:bf00:561:2000::e2) |
| 18:35:04 | → | whereiseveryone_ joins (206ba86c98@2604:bf00:561:2000::2e4) |
| 18:35:04 | → | shreyasminocha_ joins (51fdc93eda@user/shreyasminocha) |
| 18:35:04 | → | theesm_ joins (2cbdf4b38a@2604:bf00:561:2000::11c8) |
| 18:35:10 | → | jleightcap_ joins (7bc4014b62@user/jleightcap) |
| 18:35:10 | → | JoelMcCracken_ joins (5ea8252fbb@2604:bf00:561:2000::10e3) |
| 18:35:10 | → | b0o_ joins (0e4a0bf4c9@2604:bf00:561:2000::1bf) |
| 18:35:10 | → | sus_ joins (1b7af6299f@user/zeromomentum) |
| 18:35:10 | → | rselim_ joins (ce261f06ff@2604:bf00:561:2000::257) |
| 18:35:11 | → | Ankhers_ joins (e99e97ef8e@2604:bf00:561:2000::2a2) |
| 18:35:11 | → | sm2n_ joins (ae95cb1267@user/sm2n) |
| 18:35:13 | → | Athas_ joins (athas@sigkill.dk) |
| 18:35:15 | → | cbarrett_ joins (sid192934@id-192934.helmsley.irccloud.com) |
| 18:35:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:35:24 | → | berberman_ joins (~berberman@user/berberman) |
| 18:35:24 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 18:35:27 | → | JSharp_ joins (sid4580@id-4580.lymington.irccloud.com) |
| 18:35:48 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:36:12 | × | razetime quits (~quassel@117.193.1.199) (Ping timeout: 245 seconds) |
| 18:36:24 | → | megaTherion_ joins (~therion@unix.io) |
| 18:36:29 | → | h2t_ joins (~h2t@user/h2t) |
| 18:36:49 | → | wagle_ joins (~wagle@quassel.wagle.io) |
| 18:36:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
| 18:37:40 | → | jjhoo_ joins (~jahakala@user/jjhoo) |
| 18:37:47 | → | nshepper1 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) |
| 18:37:51 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 18:38:02 | → | nckx_ joins (~nckx@guix/contributor/nckx) |
| 18:38:08 | → | Cadey joins (~cadey@tailscale/xe) |
| 18:39:07 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 245 seconds) |
| 18:39:13 | → | arthurvl joins (~arthurvl@77-174-49-144.fixed.kpn.net) |
| 18:39:41 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:41:19 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 18:41:22 | → | cyphase_eviltwin joins (~cyphase@user/cyphase) |
| 18:42:09 | × | Midjak quits (~Midjak@82.66.147.146) (*.net *.split) |
| 18:42:09 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (*.net *.split) |
| 18:42:09 | × | takuan_dozo quits (~takuan@178-116-218-225.access.telenet.be) (*.net *.split) |
| 18:42:09 | × | mrmr quits (~mrmr@user/mrmr) (*.net *.split) |
| 18:42:09 | × | cyphase quits (~cyphase@user/cyphase) (*.net *.split) |
| 18:42:09 | × | phma quits (~phma@host-67-44-208-125.hnremote.net) (*.net *.split) |
| 18:42:09 | × | kimiamania6 quits (~681cf57f@user/kimiamania) (*.net *.split) |
| 18:42:09 | × | berberman quits (~berberman@user/berberman) (*.net *.split) |
| 18:42:09 | × | Xe quits (~cadey@tailscale/xe) (*.net *.split) |
| 18:42:09 | × | Flow quits (~none@gentoo/developer/flow) (*.net *.split) |
| 18:42:09 | × | [Leary] quits (~Leary]@user/Leary/x-0910699) (*.net *.split) |
| 18:42:09 | × | nckx quits (~nckx@guix/contributor/nckx) (*.net *.split) |
| 18:42:09 | × | Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (*.net *.split) |
| 18:42:09 | × | caasih quits (sid13241@id-13241.ilkley.irccloud.com) (*.net *.split) |
| 18:42:09 | × | earthy quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (*.net *.split) |
| 18:42:09 | × | JSharp quits (sid4580@id-4580.lymington.irccloud.com) (*.net *.split) |
| 18:42:09 | × | nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split) |
| 18:42:09 | × | jjhoo quits (~jahakala@user/jjhoo) (*.net *.split) |
| 18:42:09 | × | megaTherion quits (~therion@unix.io) (*.net *.split) |
| 18:42:09 | × | h2t quits (~h2t@user/h2t) (*.net *.split) |
| 18:42:09 | × | cbarrett quits (sid192934@id-192934.helmsley.irccloud.com) (*.net *.split) |
| 18:42:09 | × | jil quits (~user@vps-15050500.vps.ovh.net) (*.net *.split) |
| 18:42:09 | × | jleightcap quits (7bc4014b62@user/jleightcap) (*.net *.split) |
| 18:42:09 | × | Ankhers quits (e99e97ef8e@2604:bf00:561:2000::2a2) (*.net *.split) |
| 18:42:09 | × | fluffyballoon quits (45ce440a48@2604:bf00:561:2000::e2) (*.net *.split) |
| 18:42:09 | × | b0o quits (0e4a0bf4c9@2604:bf00:561:2000::1bf) (*.net *.split) |
| 18:42:09 | × | jakzale quits (6291399afa@user/jakzale) (*.net *.split) |
| 18:42:09 | × | sm2n quits (ae95cb1267@user/sm2n) (*.net *.split) |
| 18:42:09 | × | whereiseveryone quits (206ba86c98@2604:bf00:561:2000::2e4) (*.net *.split) |
| 18:42:09 | × | chaitlatte0 quits (ea29c0bb16@user/chaitlatte0) (*.net *.split) |
| 18:42:09 | × | rselim quits (ce261f06ff@user/milesrout) (*.net *.split) |
| 18:42:09 | × | lukec quits (9dfd4d094e@2604:bf00:561:2000::10e) (*.net *.split) |
| 18:42:09 | × | ggb quits (a62ffbaf4f@2604:bf00:561:2000::3ac) (*.net *.split) |
| 18:42:10 | × | bsima1 quits (9d7e39c8ad@2604:bf00:561:2000::dd) (*.net *.split) |
| 18:42:10 | × | theesm quits (2cbdf4b38a@2604:bf00:561:2000::11c8) (*.net *.split) |
| 18:42:10 | × | sus quits (1b7af6299f@user/zeromomentum) (*.net *.split) |
| 18:42:10 | × | shreyasminocha quits (51fdc93eda@user/shreyasminocha) (*.net *.split) |
| 18:42:10 | × | jkoshy quits (99b9359beb@user/jkoshy) (*.net *.split) |
| 18:42:10 | × | arcadewise quits (52968ed80d@2604:bf00:561:2000::3df) (*.net *.split) |
| 18:42:10 | × | n1essa quits (3d621153a5@2604:bf00:561:2000::df7) (*.net *.split) |
| 18:42:10 | × | JoelMcCracken quits (5ea8252fbb@2604:bf00:561:2000::10e3) (*.net *.split) |
| 18:42:10 | × | fvr quits (ef3e56ca8b@2604:bf00:561:2000::3c4) (*.net *.split) |
| 18:42:10 | × | wagle quits (~wagle@quassel.wagle.io) (*.net *.split) |
| 18:42:10 | × | Athas quits (athas@sigkill.dk) (*.net *.split) |
| 18:42:11 | nckx_ | is now known as nckx |
| 18:42:11 | caasih_ | is now known as caasih |
| 18:42:11 | JSharp_ | is now known as JSharp |
| 18:42:12 | megaTherion_ | is now known as megaTherion |
| 18:42:12 | Ankhers_ | is now known as Ankhers |
| 18:42:12 | Lord_of_Life_ | is now known as Lord_of_Life |
| 18:42:12 | b0o_ | is now known as b0o |
| 18:42:12 | chaitlatte0_ | is now known as chaitlatte0 |
| 18:42:12 | jakzale_ | is now known as jakzale |
| 18:42:12 | theesm_ | is now known as theesm |
| 18:42:12 | fluffyballoon_ | is now known as fluffyballoon |
| 18:42:12 | lukec_ | is now known as lukec |
| 18:42:12 | rselim_ | is now known as rselim |
| 18:42:12 | sus_ | is now known as sus |
| 18:42:12 | jleightcap_ | is now known as jleightcap |
| 18:42:12 | jkoshy_ | is now known as jkoshy |
| 18:42:12 | n1essa_ | is now known as n1essa |
| 18:42:12 | ggb_ | is now known as ggb |
| 18:42:12 | fvr_ | is now known as fvr |
| 18:42:13 | sm2n_ | is now known as sm2n |
| 18:42:13 | cbarrett_ | is now known as cbarrett |
| 18:42:13 | shreyasminocha_ | is now known as shreyasminocha |
| 18:42:13 | JoelMcCracken_ | is now known as JoelMcCracken |
| 18:42:13 | bsima1_ | is now known as bsima1 |
| 18:42:13 | arcadewise_ | is now known as arcadewise |
| 18:42:19 | whereiseveryone_ | is now known as whereiseveryone |
| 18:42:44 | Cadey | is now known as Xe |
| 18:43:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6cd6:b2b2:8eef:d429) (Remote host closed the connection) |
| 18:43:30 | → | mrmr joins (~mrmr@user/mrmr) |
| 18:43:46 | → | kimiamania6 joins (~681cf57f@user/kimiamania) |
| 18:44:01 | → | jmd_ joins (~jmdaemon@user/jmdaemon) |
| 18:44:55 | × | fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 260 seconds) |
| 18:46:00 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:47:20 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 18:47:55 | × | jmd_ quits (~jmdaemon@user/jmdaemon) (Remote host closed the connection) |
| 18:48:16 | → | jmd_ joins (~jmdaemon@user/jmdaemon) |
| 18:49:22 | → | fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof) |
| 18:50:08 | → | Cale joins (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) |
| 18:50:08 | → | Flow joins (~none@gentoo/developer/flow) |
| 18:50:27 | × | fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:50:42 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 250 seconds) |
| 18:51:45 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:52:02 | buhman_ | is now known as buhman |
| 18:52:26 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 18:52:32 | × | buhman quits (sid411355@id-411355.tinside.irccloud.com) (Changing host) |
| 18:52:32 | → | buhman joins (sid411355@user/buhman) |
| 18:53:31 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:54:53 | <shapr> | so quiet |
| 18:55:05 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:55:49 | <[exa]> | y tho |
| 18:56:36 | <shapr> | probably because I'm trying to prevent a rant about property based testing |
| 18:56:43 | <shapr> | I have *opinions* |
| 18:56:43 | → | ubert joins (~Thunderbi@178.115.54.100.wireless.dyn.drei.com) |
| 18:56:46 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 250 seconds) |
| 18:57:31 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 18:57:51 | <Rembane> | shapr: I would love to hear one. Either here or in #haskell-offtopic |
| 18:59:59 | <shapr> | Rembane: How about a few lines that's an excerpt from an email I sent to Rudy Matela last week? |
| 19:00:41 | <shapr> | Rembane: how many property based checks is enough? How many is too many and just wasting CPU? |
| 19:00:51 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 19:01:10 | <shapr> | I came up with an answer last year during my most recent time at Recurse Center: https://github.com/shapr/kudzu/ |
| 19:01:47 | <shapr> | My answer is, "use the Haskell Program Coverage tool to ask the GHC runtime to tell me which regions of the code have been executed" |
| 19:02:14 | <shapr> | I turn each region into a Bool value, and turn that into a count of regions executed. |
| 19:02:34 | <shapr> | When the total count of regions stops increasing, that's enough tests. |
| 19:02:50 | <shapr> | look how small it is! https://github.com/shapr/kudzu/blob/main/src/Kudzu.hs |
| 19:02:59 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 264 seconds) |
| 19:03:13 | <Rembane> | I love the idea! How well does it work? |
| 19:03:19 | <shapr> | It works extremely well |
| 19:03:25 | <shapr> | BUT WAIT! there's more! |
| 19:03:53 | <shapr> | Rembane: can you guess whic of QuickCheck, HedgeHog, or LeanCheck took the fewest number of generated inputs to reach "enough" ? |
| 19:04:25 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 19:04:49 | <shapr> | For even more excitement, can you guess why LeanCheck took the fewest number of steps to cover the same amount of code? |
| 19:04:52 | × | ubert quits (~Thunderbi@178.115.54.100.wireless.dyn.drei.com) (Quit: ubert) |
| 19:05:00 | <shapr> | Anyway, that's the short talk |
| 19:05:23 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 246 seconds) |
| 19:05:36 | <shapr> | For a longer and weirder talk, cdsmith and I wrote a large piece of either genius or insanity, depending on your viewpoint: https://github.com/shapr/trynocular |
| 19:06:03 | <Rembane> | shapr: I was going to guess QuickCheck because I like to have that package as an answer. I can't guess why LeanCheck took the fewest number of steps. I haven't used the package at all. :D |
| 19:06:08 | <Rembane> | shapr: Why not both? |
| 19:06:30 | <shapr> | The question for trynocular was: can I do gradient descent on random test inputs, and use that to explore what inputs exercise which parts of a codebase? |
| 19:06:59 | <shapr> | The answer is pretty much yes |
| 19:07:24 | <shapr> | With trynocular, it's more about really smart input generators |
| 19:07:57 | <shapr> | roughly, the thunks are wrapped in unsafePerformIO that lets them report when they were forced |
| 19:08:08 | <shapr> | So you know that's an input the code is using |
| 19:08:24 | <Rembane> | That's super neat! |
| 19:08:51 | <shapr> | The one sad part of this whole adventure was that I checked reverse dependencies of all the property based test libraries on hackage |
| 19:09:02 | <shapr> | and 1. far fewer property tests on hackage than I expected |
| 19:09:05 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 19:09:27 | <shapr> | and 2. many libraries that depend on a PBT library use it for unit tests with static inputs :-( |
| 19:09:56 | <shapr> | Rembane: anyway, if you get as excited about PBT as I do, you really want to read Rudy Matela's thesis on PBT tools |
| 19:10:12 | <shapr> | https://matela.com.br/ |
| 19:10:33 | <shapr> | I'm a huge fan of PBT and Rudy has the coolest tools and ideas I've seen in decades of reading research papers on this topic |
| 19:11:19 | <shapr> | Rembane: in my opinion, LeanCheck is the simplest and best value generator for property based tests, in almost all cases |
| 19:11:25 | <Rembane> | shapr: Thank you for the links! I am super excited about PBT! |
| 19:11:29 | <shapr> | hurrah! |
| 19:11:31 | <shapr> | I'm not the only one! |
| 19:11:42 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 19:11:43 | <Rembane> | shapr: I'm a bit tired though so I'm not very good at english at the moment. |
| 19:11:47 | <shapr> | kein problem |
| 19:12:02 | <shapr> | Wait, I forget which language is your first |
| 19:12:16 | <shapr> | inga problem? svenska? |
| 19:12:21 | shapr | shrugs |
| 19:12:52 | × | phma_ quits (phma@2001:5b0:211f:7128:594e:98f8:7c9e:d433) (Read error: Connection reset by peer) |
| 19:13:10 | <shapr> | And now I go back to trying to get afl-gcc to work inside nix |
| 19:13:14 | <Rembane> | Svenska it is! |
| 19:13:16 | → | phma_ joins (phma@2001:5b0:211f:7128:594e:98f8:7c9e:d433) |
| 19:13:23 | <Rembane> | shapr: Sounds exciting! GL HF! |
| 19:13:47 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 19:14:08 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 246 seconds) |
| 19:14:23 | → | nick4 joins (~nick@2600:100d:b119:20c8:388e:ed2:1b56:5150) |
| 19:14:55 | <shapr> | tack så mycket! tror det blir kul |
| 19:15:10 | → | fweht joins (uid404746@id-404746.lymington.irccloud.com) |
| 19:15:39 | <Rembane> | shapr: No worries! ^^ |
| 19:15:57 | <mauke> | I only know PBF |
| 19:16:56 | <shapr> | what's the F? |
| 19:17:06 | <mauke> | fellowship |
| 19:17:20 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:3c9:7bb3:d043:de20) |
| 19:18:16 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 19:20:37 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 19:22:26 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 19:23:09 | <picklejuice> | set |
| 19:24:06 | × | picklejuice quits (~root@172.56.219.90) (Quit: leaving) |
| 19:25:33 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 19:26:12 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 19:28:59 | × | troydm quits (~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
| 19:29:11 | → | lottaquestions_ joins (~nick@2607:fa49:503d:b200:3c9:7bb3:d043:de20) |
| 19:29:24 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:3c9:7bb3:d043:de20) (Ping timeout: 246 seconds) |
| 19:29:27 | → | troydm joins (~troydm@user/troydm) |
| 19:30:44 | × | nick4 quits (~nick@2600:100d:b119:20c8:388e:ed2:1b56:5150) (Ping timeout: 246 seconds) |
| 19:32:23 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 19:37:06 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 19:38:13 | → | nick4 joins (~nick@2600:8807:9144:2e00:1de:2bc9:a973:53c9) |
| 19:41:17 | → | pieguy128 joins (~pieguy128@67.70.103.226) |
| 19:43:55 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6cd6:b2b2:8eef:d429) |
| 19:46:11 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 19:47:52 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 245 seconds) |
| 19:48:05 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6cd6:b2b2:8eef:d429) (Ping timeout: 246 seconds) |
| 19:49:01 | × | XliminalX quits (~goirc@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) (Remote host closed the connection) |
| 19:50:52 | → | XliminalX joins (~goirc@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) |
| 19:50:53 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 19:53:45 | × | XliminalX quits (~goirc@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) (Read error: Connection reset by peer) |
| 19:55:14 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 19:55:40 | → | XliminalX joins (~goirc@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) |
| 19:56:34 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 19:57:44 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 19:58:44 | × | jmd_ quits (~jmdaemon@user/jmdaemon) (Ping timeout: 250 seconds) |
| 19:59:13 | → | Inst_ joins (~Inst@2601:6c4:4081:2fc0:dd33:627c:a196:edc4) |
| 19:59:19 | <yin> | when installing ghc manually, is ./configure supposed to give me some output while running? |
| 19:59:47 | × | mxs quits (~mxs@user/mxs) (Ping timeout: 246 seconds) |
| 20:00:33 | × | APic quits (apic@apic.name) (Ping timeout: 246 seconds) |
| 20:01:03 | <probie> | yin: It gives me output |
| 20:01:12 | × | falafel quits (~falafel@2603-7000-a700-8710-9d84-55b0-693c-e89b.res6.spectrum.com) (Ping timeout: 245 seconds) |
| 20:01:13 | <c_wraith> | you should get a lot of gcc output from running ./configure |
| 20:02:15 | <yin> | i get nothing. i can see it's writing to disk for some minutes and then inexplicably terminates |
| 20:02:38 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 260 seconds) |
| 20:03:10 | → | mxs joins (~mxs@user/mxs) |
| 20:03:53 | <yin> | reintalling gcc... |
| 20:04:19 | <probie> | What OS are you on, what version of GHC are you trying to build, and did you run ./boot first? (not that not-running ./boot would cause no output, but you'll need to run it before you can build) |
| 20:06:08 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 252 seconds) |
| 20:09:16 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 20:10:02 | → | ft joins (~ft@p3e9bc835.dip0.t-ipconnect.de) |
| 20:10:25 | → | vgtw joins (~vgtw@user/vgtw) |
| 20:10:41 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:12:32 | → | zeenk joins (~zeenk@2a02:2f04:a00b:1800::7fe) |
| 20:14:29 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 20:15:07 | × | ars23 quits (~ars23@86.120.205.92) (Quit: Leaving) |
| 20:15:51 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:17:00 | × | pieguy128 quits (~pieguy128@67.70.103.226) (Ping timeout: 246 seconds) |
| 20:17:44 | Athas_ | is now known as Athas |
| 20:21:39 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 20:21:42 | × | thegeekinside quits (~thegeekin@189.217.90.138) (Read error: Connection reset by peer) |
| 20:23:38 | → | jonathan joins (~jonathan@c-5eea7352-74736162.cust.telenor.se) |
| 20:23:43 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 20:23:59 | → | APic joins (apic@apic.name) |
| 20:26:54 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 250 seconds) |
| 20:29:05 | × | lottaquestions_ quits (~nick@2607:fa49:503d:b200:3c9:7bb3:d043:de20) (Read error: Connection reset by peer) |
| 20:29:30 | → | lottaquestions_ joins (~nick@2607:fa49:503d:b200:3c9:7bb3:d043:de20) |
| 20:29:56 | × | APic quits (apic@apic.name) (Ping timeout: 250 seconds) |
| 20:31:29 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 20:31:57 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 20:33:10 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 20:34:27 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 20:38:06 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 260 seconds) |
| 20:39:46 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 258 seconds) |
| 20:41:42 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 20:42:34 | → | APic joins (~apic@apic.name) |
| 20:42:51 | × | titibandit quits (~titibandi@user/titibandit) (Read error: Connection reset by peer) |
| 20:43:57 | → | neuroevolutus joins (~neuroevol@2001:ac8:9a:76::1e) |
| 20:47:03 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 258 seconds) |
| 20:47:35 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 246 seconds) |
| 20:48:27 | → | titibandit joins (~titibandi@user/titibandit) |
| 20:52:49 | → | misterfish joins (~misterfis@84-53-85-146.bbserv.nl) |
| 20:57:45 | × | fun-safe-math quits (~fun-safe-@c-24-21-226-85.hsd1.or.comcast.net) () |
| 20:58:29 | × | bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Remote host closed the connection) |
| 21:02:17 | × | YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 246 seconds) |
| 21:02:22 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 21:03:35 | × | dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 264 seconds) |
| 21:04:10 | <yin> | glibc void linux fresh install on a vm |
| 21:04:23 | <yin> | tried 10 different versions od ghc |
| 21:04:42 | <yin> | did not run ./boot |
| 21:04:50 | → | YuutaW joins (~YuutaW@2404:f4c0:f9c3:502::100:17b7) |
| 21:05:10 | <yin> | what's boot? |
| 21:07:17 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 21:07:25 | <geekosaur> | it verifies you have all the necessary haskell boot libraries and prepares everything for configure |
| 21:09:13 | <yin> | this is what i get in the logs https://paste.jrvieira.com/1689262817710 |
| 21:09:21 | <yin> | from ghcup |
| 21:11:09 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 21:11:11 | <mauke> | are there any other files in ~/.ghcup/logs? |
| 21:11:45 | <yin> | no |
| 21:12:01 | <Hecate> | yin: as described in https://ghc.dev/, building ghc requires running "./boot && ./configure" |
| 21:13:39 | <mauke> | not a great error |
| 21:13:47 | <mauke> | I'd probably bust out strace -f at this point |
| 21:16:11 | → | pavonia joins (~user@user/siracusa) |
| 21:16:25 | × | misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 240 seconds) |
| 21:19:53 | <juri_> | my talk to CCCCamp was accepted. https://pretalx.c3voc.de/chaos-communication-camp-2023/talk/review/TSTWWQ37BBEXKFWJRHMNQJWQRGDKBGCA |
| 21:20:23 | <Hecate> | juri_: congrats! |
| 21:20:56 | <Hecate> | Axman6: can I kindly ask for a review on this? I am quite out of my depth regarding the failure of the test here: https://github.com/haskell-cryptography/libsodium-bindings/pull/94 |
| 21:21:11 | <juri_> | Hecate: thanks! I'm nervous already. :) |
| 21:21:28 | <Hecate> | juri_: yeah I understand, 'twas the same thing when my talk was accepted at FOSDEM |
| 21:21:52 | <juri_> | Hecate: this is my third CCC talk. :) |
| 21:22:02 | <juri_> | I'm just always nervous. :P |
| 21:22:38 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 21:23:06 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Quit: sm[i]) |
| 21:23:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:23:15 | <Hecate> | juri_: hahaha |
| 21:23:23 | <Hecate> | well good luck nonetheless! |
| 21:23:34 | <juri_> | thank you! :) |
| 21:24:43 | <yin> | ok this is weird |
| 21:24:57 | <yin> | ./configure (line 19): Unsupported use of '='. In fish, please use 'set DUALCASE 1'. |
| 21:25:00 | <yin> | DUALCASE=1; export DUALCASE # for MKS sh |
| 21:25:02 | <yin> | ^~~~~~~~~^ |
| 21:25:05 | <yin> | warning: Error while reading file ./configure |
| 21:25:18 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
| 21:25:29 | <Hecate> | yin: AH! :D You use a non-POSIX shell, don't you? |
| 21:25:37 | <yin> | i get this error even if i dont use fish |
| 21:25:45 | <Hecate> | oh no |
| 21:25:55 | <yin> | oh no indeed |
| 21:25:57 | <Hecate> | yin: name and version of your shell? |
| 21:26:11 | <Hecate> | wait this should be using sh |
| 21:26:25 | <geekosaur> | it should have a `#! /bin/sh` at the top |
| 21:26:30 | <Hecate> | yeah |
| 21:26:40 | <boxscape_> | ...is it possible that /bin/sh is pointing to fish? |
| 21:26:41 | <yin> | bash 5.2.15 |
| 21:26:54 | <Hecate> | exact same version here |
| 21:26:57 | <yin> | geekosaur: it does have #! /bon/sh |
| 21:27:01 | <yin> | *bin |
| 21:27:26 | <Hecate> | yin: and you've run ./boot before, right? |
| 21:27:38 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 272 seconds) |
| 21:27:55 | <yin> | yes, and i have used fish |
| 21:28:02 | <Hecate> | very peculiar |
| 21:28:04 | <yin> | but cloned the repo again |
| 21:28:15 | <Hecate> | ok |
| 21:28:19 | → | falafel joins (~falafel@2603-7000-a700-8710-f0a4-a73f-8e9b-67cd.res6.spectrum.com) |
| 21:28:33 | <Hecate> | unfortunately I have to leave, but do ask for help in #ghc, yin |
| 21:28:44 | <yin> | ok ty |
| 21:29:34 | <yin> | boxscape_: lol no |
| 21:29:41 | <boxscape_> | good :) |
| 21:30:26 | <boxscape_> | yin I guess the same thing happens if you run `/bin/sh configure` instead of `./configure`? |
| 21:30:30 | × | Guest9190 quits (~finn@176-151-21-224.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 21:30:39 | <yin> | sec |
| 21:34:51 | <yin> | exact same thing |
| 21:35:07 | <yin> | something's wrong with my system |
| 21:36:56 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:39:39 | × | son0p quits (~ff@181.136.122.143) (Remote host closed the connection) |
| 21:39:48 | × | jonathan quits (~jonathan@c-5eea7352-74736162.cust.telenor.se) (Remote host closed the connection) |
| 21:40:08 | → | jonathan joins (~jonathan@94.234.115.82) |
| 21:42:36 | <geekosaur> | I really hope they didn't do something stupid like put /bin.sh under an /etc/alternatives style system and include a non-POSIX shell in the alternatives |
| 21:44:26 | × | jonathan quits (~jonathan@94.234.115.82) (Ping timeout: 246 seconds) |
| 21:44:52 | <yin> | no way |
| 21:45:10 | <yin> | i made a shell script and it works fine |
| 21:45:46 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 21:47:46 | → | son0p joins (~ff@181.136.122.143) |
| 21:51:28 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:54:03 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 21:54:21 | → | anon24339985 joins (~anon24339@cpc142034-slou6-2-0-cust488.17-4.cable.virginm.net) |
| 21:54:35 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 21:55:59 | × | acarrico quits (~acarrico@dhcp-68-142-49-163.greenmountainaccess.net) (Quit: Leaving.) |
| 21:57:28 | × | neuroevolutus quits (~neuroevol@2001:ac8:9a:76::1e) (Quit: Client closed) |
| 21:59:11 | → | wroathe joins (~wroathe@user/wroathe) |
| 21:59:18 | × | buckwheat quits (~buckwheat@209.122.211.192) (Ping timeout: 272 seconds) |
| 22:02:47 | × | YuutaW quits (~YuutaW@2404:f4c0:f9c3:502::100:17b7) (Ping timeout: 240 seconds) |
| 22:02:47 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:03:08 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 22:04:37 | → | YuutaW joins (~YuutaW@2404:f4c0:f9c3:502::100:17b7) |
| 22:06:40 | × | dcoutts quits (~duncan@195.80.64.243) (Remote host closed the connection) |
| 22:09:35 | × | Noinia quits (~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 22:09:35 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 22:09:35 | × | ddellacosta quits (~ddellacos@146.70.165.140) (Ping timeout: 252 seconds) |
| 22:14:11 | × | nick4 quits (~nick@2600:8807:9144:2e00:1de:2bc9:a973:53c9) (Ping timeout: 246 seconds) |
| 22:14:11 | → | dcoutts_ joins (~duncan@195.80.64.243) |
| 22:14:11 | wagle_ | is now known as wagle |
| 22:14:11 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 22:14:11 | → | Noinia joins (~Frank@77-162-168-71.fixed.kpn.net) |
| 22:14:12 | → | wroathe joins (~wroathe@user/wroathe) |
| 22:14:12 | → | ddellacosta joins (~ddellacos@146.70.165.140) |
| 22:14:12 | <yin> | welp guess i'll pass on void for now |
| 22:14:12 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 272 seconds) |
| 22:16:04 | → | thegeekinside joins (~thegeekin@189.217.90.138) |
| 22:22:10 | × | Aleksejs quits (~Aleksejs@107.170.21.106) (Ping timeout: 252 seconds) |
| 22:22:16 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 22:22:51 | → | Aleksejs joins (~Aleksejs@107.170.21.106) |
| 22:23:44 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 22:23:54 | → | CiaoSen joins (~Jura@2a05:5800:295:7d00:664b:f0ff:fe37:9ef) |
| 22:25:22 | × | acidjnk quits (~acidjnk@p200300d6e7072f18d1756600c61e2eb6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 22:28:46 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 22:30:40 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 22:31:10 | → | nick4 joins (~nick@2600:100d:b14c:edbb:4cc2:d98d:24ee:66dd) |
| 22:34:45 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:36:56 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 246 seconds) |
| 22:37:24 | → | dmgk joins (~dmgk@user/dmgk) |
| 22:39:12 | × | nick4 quits (~nick@2600:100d:b14c:edbb:4cc2:d98d:24ee:66dd) (Ping timeout: 272 seconds) |
| 22:39:13 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 22:44:16 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 272 seconds) |
| 22:49:14 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 22:49:15 | × | ft quits (~ft@p3e9bc835.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 22:50:46 | → | ft joins (~ft@p3e9bc835.dip0.t-ipconnect.de) |
| 22:51:55 | × | Inst_ quits (~Inst@2601:6c4:4081:2fc0:dd33:627c:a196:edc4) (Ping timeout: 240 seconds) |
| 22:53:48 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 22:54:55 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds) |
| 22:55:13 | → | nick4 joins (~nick@50.86.118.19) |
| 22:55:46 | → | kimjetwav joins (~user@2607:fea8:235e:b600:e655:bdac:14d2:fa34) |
| 22:56:13 | × | sm[i] quits (~sm@024-165-041-186.res.spectrum.com) (Quit: sm[i]) |
| 23:02:59 | → | bontaq joins (~user@ool-45779b84.dyn.optonline.net) |
| 23:04:45 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 23:04:57 | → | nick2 joins (~nick@2600:8807:9084:7800:b0ad:2249:4f5f:92e3) |
| 23:07:04 | × | nick4 quits (~nick@50.86.118.19) (Ping timeout: 272 seconds) |
| 23:09:50 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 23:12:12 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 23:13:48 | × | off^ quits (~cd@24.125.210.85) (Remote host closed the connection) |
| 23:17:25 | → | mei joins (~mei@user/mei) |
| 23:20:18 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:21:00 | × | nick2 quits (~nick@2600:8807:9084:7800:b0ad:2249:4f5f:92e3) (Ping timeout: 272 seconds) |
| 23:21:41 | × | Claro quits (~claro@user/Claro) (Ping timeout: 245 seconds) |
| 23:24:11 | × | CiaoSen quits (~Jura@2a05:5800:295:7d00:664b:f0ff:fe37:9ef) (Ping timeout: 246 seconds) |
| 23:24:34 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 250 seconds) |
| 23:26:57 | → | buckwheat joins (~buckwheat@209.122.211.192) |
| 23:30:03 | → | Claro joins (~claro@45.84.139.156) |
| 23:30:06 | × | Claro quits (~claro@45.84.139.156) (Changing host) |
| 23:30:06 | → | Claro joins (~claro@user/Claro) |
| 23:30:07 | × | zeenk quits (~zeenk@2a02:2f04:a00b:1800::7fe) (Quit: Konversation terminated!) |
| 23:30:10 | × | Claro quits (~claro@user/Claro) (Client Quit) |
| 23:30:27 | × | fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:30:45 | → | Claro joins (~claro@45.84.139.156) |
| 23:30:45 | × | Claro quits (~claro@45.84.139.156) (Changing host) |
| 23:30:45 | → | Claro joins (~claro@user/Claro) |
| 23:34:25 | × | mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.0.2) |
| 23:38:55 | → | oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) |
| 23:39:10 | → | arahael_ joins (~arahael@124-149-31-4.dyn.iinet.net.au) |
| 23:40:28 | → | dsrt^ joins (~cd@24.125.210.85) |
| 23:43:45 | → | mauke_ joins (~mauke@user/mauke) |
| 23:43:56 | × | arahael_ quits (~arahael@124-149-31-4.dyn.iinet.net.au) (Ping timeout: 252 seconds) |
| 23:44:55 | → | jmd_ joins (~jmdaemon@user/jmdaemon) |
| 23:45:24 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 252 seconds) |
| 23:45:24 | mauke_ | is now known as mauke |
| 23:46:40 | → | nick2 joins (~nick@2600:8807:9084:7800:b0ad:2249:4f5f:92e3) |
| 23:47:51 | → | mechap joins (~mechap@user/mechap) |
| 23:51:08 | × | nick2 quits (~nick@2600:8807:9084:7800:b0ad:2249:4f5f:92e3) (Ping timeout: 246 seconds) |
| 23:51:12 | × | tcard_ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection) |
| 23:51:29 | → | tcard_ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 23:54:01 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Quit: oo_miguel) |
| 23:57:47 | → | sm[i] joins (~sm@024-165-041-186.res.spectrum.com) |
All times are in UTC on 2023-07-13.