Logs on 2025-01-30 (liberachat/#haskell)
| 00:00:47 | <jackdk> | I'm partial to "A parser for things is a function from String, to Maybe the thing and the leftover String" |
| 00:02:00 | <glguy> | "The only place I’ve seen it being used is in ..." \o/ |
| 00:02:15 | → | mange joins (~user@user/mange) |
| 00:03:10 | <int-e> | now try to make that work with the fail/tail rhyme |
| 00:03:29 | → | noctux joins (~noctux@user/noctux) |
| 00:04:18 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 252 seconds) |
| 00:04:22 | <haskellbridge> | <Axman6> glguy You're pretty much famous |
| 00:06:37 | × | dolio quits (~dolio@130.44.140.168) (Quit: ZNC 1.9.1 - https://znc.in) |
| 00:09:07 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 00:13:53 | × | user__ quits (~user@user/fmira) (Remote host closed the connection) |
| 00:15:19 | × | juri_ quits (~juri@implicitcad.org) (Ping timeout: 260 seconds) |
| 00:15:24 | → | dolio joins (~dolio@130.44.140.168) |
| 00:16:05 | → | user__ joins (~user@user/fmira) |
| 00:18:17 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:19:21 | × | dolio quits (~dolio@130.44.140.168) (Client Quit) |
| 00:20:27 | → | dolio joins (~dolio@130.44.140.168) |
| 00:22:59 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 00:27:53 | → | alfiee joins (~alfiee@user/alfiee) |
| 00:30:55 | → | ColinRobinson joins (~juan@user/JuanDaugherty) |
| 00:32:10 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 00:32:12 | → | juri_ joins (~juri@implicitcad.org) |
| 00:33:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:38:02 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 00:39:33 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f984d3514a5c03883b9.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 00:44:53 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 00:45:10 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 00:46:19 | → | monochrm joins (trebla@216.138.220.146) |
| 00:46:38 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 245 seconds) |
| 00:46:41 | monochrm | is now known as monochrom |
| 00:49:03 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:53:41 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 00:55:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:57:22 | × | sprotte24 quits (~sprotte24@p200300d16f066800e58385d4d3a6ab2d.dip0.t-ipconnect.de) (Quit: Leaving) |
| 00:57:28 | × | euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 00:58:28 | → | euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
| 01:00:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 01:00:54 | × | adamCS quits (~adamCS@pool-100-33-243-37.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
| 01:03:25 | → | brachyrhynchos joins (~brachyrhy@user/brachyrhynchos) |
| 01:03:48 | × | xff0x quits (~xff0x@2405:6580:b080:900:dc88:7fed:aa57:a617) (Ping timeout: 252 seconds) |
| 01:04:56 | × | user__ quits (~user@user/fmira) (Remote host closed the connection) |
| 01:05:32 | → | user__ joins (~user@user/fmira) |
| 01:10:10 | → | adamCS joins (~adamCS@71.190.30.173) |
| 01:10:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:15:33 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 01:17:17 | → | alfiee joins (~alfiee@user/alfiee) |
| 01:20:51 | × | otto_s quits (~user@p5b044c4b.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 01:21:27 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 01:22:50 | → | otto_s joins (~user@p5b0441ee.dip0.t-ipconnect.de) |
| 01:26:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:30:48 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 01:32:36 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 01:35:50 | → | monochrm joins (trebla@216.138.220.146) |
| 01:36:13 | × | ColinRobinson quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 01:37:21 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 248 seconds) |
| 01:37:22 | monochrm | is now known as monochrom |
| 01:41:48 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:43:11 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 01:43:40 | → | califax joins (~califax@user/califx) |
| 01:45:34 | × | user363627 quits (~user@user/user363627) (Ping timeout: 260 seconds) |
| 01:45:46 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:46:03 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 01:55:00 | → | ColinRobinson joins (~juan@user/JuanDaugherty) |
| 01:55:48 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 01:56:12 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 01:57:13 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:57:24 | <ColinRobinson> | because this is a publicly logged channel, clarifying my use of 'factitious" the last time I spoke here was not meant in the English sense, at least the one that shows in web dictionary entries but rathter the one that shows for 'facticity' w or w/o sartre |
| 01:58:24 | <ColinRobinson> | *rather |
| 01:58:34 | × | ColinRobinson quits (~juan@user/JuanDaugherty) (Client Quit) |
| 01:59:40 | <EvanR> | are these words actually cromulent |
| 02:01:38 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 02:01:41 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f46c5769c4c50fc7d32.dip0.t-ipconnect.de) |
| 02:03:35 | → | ColinRobinson joins (~juan@user/JuanDaugherty) |
| 02:05:35 | → | fired_ joins (la@2600:3c00::f03c:92ff:fee3:aace) |
| 02:05:37 | × | Pozyomka quits (~pyon@user/pyon) (Ping timeout: 248 seconds) |
| 02:05:38 | × | fired quits (LA@2600:3c00::f03c:92ff:fee3:aace) (Ping timeout: 248 seconds) |
| 02:06:05 | fired_ | is now known as fired |
| 02:06:12 | <ColinRobinson> | aiui, 'cromulent' is a nonce without meaning other than as a meme for a nonsense term. Neither of the terms i referred to has that character. Factitious as it is being reported is the exact opposite of the deadly srsness I intend for this persona. |
| 02:06:42 | → | alfiee joins (~alfiee@user/alfiee) |
| 02:07:07 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@142.147.89.199) |
| 02:07:08 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 252 seconds) |
| 02:07:40 | → | monochrom joins (trebla@216.138.220.146) |
| 02:07:40 | → | Pozyomka joins (~pyon@user/pyon) |
| 02:09:11 | <EvanR> | ColinRobinson or JuanDaugherty? |
| 02:09:27 | <ColinRobinson> | ColinRobinson |
| 02:09:29 | <EvanR> | familiar with one nick not the other |
| 02:11:10 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 02:11:16 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 265 seconds) |
| 02:12:36 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:14:18 | <ColinRobinson> | the quit text leads to an explanation (catalog of identities) if u havent already seen. |
| 02:16:14 | ColinRobinson | is now known as JuanDaugherty |
| 02:17:21 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 02:17:29 | → | tavare joins (~tavare@user/tavare) |
| 02:18:59 | <JuanDaugherty> | it's possible I may give it some use/role in ##haskell-nlp , it's a rich role as far as automating a persona is concerned, more bot like and this one I intend to have the prolog nature and the one sofar assigned the haskell nature i've decided not to run externally |
| 02:20:19 | × | brachyrhynchos quits (~brachyrhy@user/brachyrhynchos) (Remote host closed the connection) |
| 02:21:53 | <EvanR> | the quit text read "Client Quit" |
| 02:22:16 | <EvanR> | you're a bot? |
| 02:23:03 | <JuanDaugherty> | not unless i'm marked away |
| 02:23:55 | JuanDaugherty | is never away in effect |
| 02:24:06 | <EvanR> | o_O |
| 02:24:10 | <JuanDaugherty> | when present |
| 02:25:47 | <JuanDaugherty> | it looks like nick grouping foils the client quit message, checking |
| 02:25:55 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 02:26:31 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 02:27:58 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:29:05 | <talismanick> | For a function as ubiquitous as `traverse`, I'm surprised there isn't an infix shorthand |
| 02:37:18 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f46c5769c4c50fc7d32.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 02:38:40 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 02:43:32 | <haskellbridge> | <Bowuigi> It's easier to associate it with "for" that way I guess |
| 02:44:47 | × | tuxpaint quits (~a@put.gay) (Quit: gn) |
| 02:45:06 | → | tuxpaint joins (~a@2600:3c06::f03c:93ff:fea6:ef0e) |
| 02:46:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:46:37 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 02:48:33 | <talismanick> | `for` is nice if you're mimicking procedural langs with do-notation or simply want to spare your eyes a spurious `flip`, but I wish it was visually distinct like how `<$>` is to `fmap` |
| 02:48:56 | <talismanick> | `<*$>`, maybe? |
| 02:49:54 | <talismanick> | `<$>>=` looks nicer, but it's not just `mapM` anymore |
| 02:50:42 | × | pabs3 quits (~pabs3@user/pabs3) (Read error: Connection reset by peer) |
| 02:51:08 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 02:51:54 | → | pabs3 joins (~pabs3@user/pabs3) |
| 02:53:29 | → | pavonia joins (~user@user/siracusa) |
| 02:55:54 | × | sarna quits (~sarna@d224-221.icpnet.pl) (Ping timeout: 252 seconds) |
| 02:56:13 | → | sarna joins (~sarna@d224-221.icpnet.pl) |
| 02:56:26 | → | alfiee joins (~alfiee@user/alfiee) |
| 02:56:43 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 02:56:56 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 02:58:20 | → | monochrm joins (trebla@216.138.220.146) |
| 02:58:38 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 265 seconds) |
| 02:58:41 | monochrm | is now known as monochrom |
| 02:58:43 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 02:58:43 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 02:58:53 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 02:59:25 | → | gmg joins (~user@user/gehmehgeh) |
| 03:00:57 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 03:01:55 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:03:28 | × | alx741 quits (~alx741@186.33.188.229) (Ping timeout: 265 seconds) |
| 03:03:46 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 248 seconds) |
| 03:05:11 | → | philopsos joins (~caecilius@user/philopsos) |
| 03:07:06 | → | xff0x_ joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 03:08:11 | × | pie__ quits (~pie_bnc@user/pie/x-2818909) () |
| 03:08:34 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 260 seconds) |
| 03:09:44 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 03:09:50 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 03:12:39 | × | Square2 quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 03:17:13 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:17:25 | × | polykernel quits (~polykerne@user/polykernel) (Remote host closed the connection) |
| 03:18:14 | → | polykernel joins (~polykerne@user/polykernel) |
| 03:20:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:23:34 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 03:24:58 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 03:29:21 | → | weary-traveler joins (~user@user/user363627) |
| 03:36:03 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:38:09 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 03:41:05 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 03:44:52 | → | alfiee joins (~alfiee@user/alfiee) |
| 03:47:37 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@142.147.89.199) (Quit: Leaving) |
| 03:49:03 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 03:51:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:56:24 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 04:04:33 | → | cyphase joins (~cyphase@user/cyphase) |
| 04:07:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:07:49 | <monochrom> | @type traverse |
| 04:07:50 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 04:10:38 | <monochrom> | Yeah something like <*$> or <$*> |
| 04:11:22 | <monochrom> | Note that our traverse is called flip map in impure functional languages for a certain f and a certain t. >:) |
| 04:14:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 04:24:05 | × | j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 04:25:19 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:26:06 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
| 04:26:33 | → | aforemny_ joins (~aforemny@2001:9e8:6ce3:9600:2c48:7088:cbda:dd4) |
| 04:27:33 | × | aforemny quits (~aforemny@i577B125E.versanet.de) (Ping timeout: 248 seconds) |
| 04:27:54 | → | j1n37 joins (~j1n37@user/j1n37) |
| 04:29:41 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 04:32:21 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:a66e::) (Quit: The Lounge - https://thelounge.chat) |
| 04:33:36 | → | alfiee joins (~alfiee@user/alfiee) |
| 04:33:58 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:a66e::) |
| 04:38:09 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
| 04:40:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:45:10 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 04:45:55 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 04:47:34 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:52:14 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 04:54:38 | × | sa1 quits (sid7690@id-7690.ilkley.irccloud.com) (Ping timeout: 265 seconds) |
| 04:54:58 | × | PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 245 seconds) |
| 04:57:51 | → | sa1 joins (sid7690@id-7690.ilkley.irccloud.com) |
| 04:57:56 | → | PotatoGim joins (sid99505@id-99505.lymington.irccloud.com) |
| 05:04:19 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:08:50 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 05:09:08 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 05:11:12 | <haskellbridge> | <maerwald> geekosaur: no, ghcup doesn't overwrite itself by default |
| 05:11:36 | <haskellbridge> | <maerwald> and no sane package manager places binaries in HOME |
| 05:13:29 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 05:13:37 | → | monochrm joins (trebla@216.138.220.146) |
| 05:13:43 | <haskellbridge> | <maerwald> yin: ghcup itself has no dependencies other than "curl" or "wget". The dependencies that you mean are for _GHC_. So someone packaging ghcup properly would _not_ add those dependencies to the ghcup package. |
| 05:13:57 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 246 seconds) |
| 05:13:57 | monochrm | is now known as monochrom |
| 05:13:59 | × | monochrom quits (trebla@216.138.220.146) (Client Quit) |
| 05:15:50 | → | euouae joins (~euouae@user/euouae) |
| 05:16:14 | <haskellbridge> | <maerwald> You can try: <package-manager> install $(ghcup tool-requirements -r) |
| 05:16:32 | <euouae> | Hello functions of the type Functor f => f a -> f b, what are they called? |
| 05:16:48 | <euouae> | are they functor transformers? natural transformations? |
| 05:19:01 | <geekosaur> | the package manager doesn't but rustup does |
| 05:19:47 | <haskellbridge> | <maerwald> yes, that's why they don't interfere with each other |
| 05:20:02 | <geekosaur> | that was the point I was trying to make |
| 05:20:41 | <geekosaur> | as distinct from older pip which happily would overwrite system packages and break stuff |
| 05:21:10 | <euouae> | pip and weep |
| 05:23:01 | → | alfiee joins (~alfiee@user/alfiee) |
| 05:24:13 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:24:46 | <geekosaur> | Fedora gave up some years back and started shipping a private python install for yum/dnf to use so people upgrading system packages didn't break it |
| 05:26:04 | → | monochrom joins (trebla@216.138.220.146) |
| 05:27:49 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 05:28:23 | <euouae> | debian has some block & banner too for it |
| 05:28:59 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 05:29:00 | <euouae> | error: externally-managed-environment is how it starts... 20 line paragraph error |
| 05:35:20 | → | tnt2 joins (~Thunderbi@user/tnt1) |
| 05:35:24 | × | tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 260 seconds) |
| 05:35:24 | tnt2 | is now known as tnt1 |
| 05:39:35 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:41:41 | × | euouae quits (~euouae@user/euouae) () |
| 05:43:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 05:48:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:48:53 | → | michalz joins (~michalz@185.246.207.197) |
| 05:49:32 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 05:55:14 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 05:57:44 | → | alfiee joins (~alfiee@user/alfiee) |
| 06:02:24 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 06:03:31 | → | takuan joins (~takuan@d8D86B601.access.telenet.be) |
| 06:03:34 | × | j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 06:06:25 | × | ft quits (~ft@p3e9bcd97.dip0.t-ipconnect.de) (Quit: leaving) |
| 06:06:37 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:06:51 | → | j1n37 joins (~j1n37@user/j1n37) |
| 06:12:46 | → | CiaoSen joins (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) |
| 06:14:51 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 06:18:27 | <haskellbridge> | <Axman6> @irc_libera.chat_euouae I've generally seen "(forall a. f a -> g a)" being referred to as natural transformations |
| 06:18:57 | <Axman6> | ew... ok, the default formatting used by matrix is bad in IRC. oops |
| 06:25:44 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 06:25:57 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:26:17 | <int-e> | haskellbridge: it's fine ;-) |
| 06:27:54 | → | monochrm joins (trebla@216.138.220.146) |
| 06:28:34 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 252 seconds) |
| 06:28:34 | monochrm | is now known as monochrom |
| 06:30:36 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 06:31:18 | × | euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds) |
| 06:31:31 | → | euleritian joins (~euleritia@dynamic-176-006-142-040.176.6.pool.telefonica.de) |
| 06:32:25 | <haskellbridge> | <Axman6> :( |
| 06:41:20 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:41:24 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 06:43:04 | × | euleritian quits (~euleritia@dynamic-176-006-142-040.176.6.pool.telefonica.de) (Ping timeout: 260 seconds) |
| 06:43:42 | → | MyNetAz joins (~MyNetAz@user/MyNetAz) |
| 06:43:48 | → | euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
| 06:45:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 06:46:30 | → | alfiee joins (~alfiee@user/alfiee) |
| 06:49:36 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:50:57 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
| 06:53:57 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f467932b3eddade0ab9.dip0.t-ipconnect.de) |
| 06:54:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 07:00:44 | → | monochrm joins (trebla@216.138.220.146) |
| 07:02:16 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 272 seconds) |
| 07:02:16 | monochrm | is now known as monochrom |
| 07:03:13 | × | euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
| 07:04:04 | → | euleritian joins (~euleritia@dynamic-176-003-044-001.176.3.pool.telefonica.de) |
| 07:04:55 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:09:33 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 07:10:39 | → | Square2 joins (~Square4@user/square) |
| 07:16:21 | × | bliminse quits (~bliminse@user/bliminse) (Quit: leaving) |
| 07:19:00 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 07:19:49 | × | Square2 quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 07:20:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:24:38 | × | Digit quits (~user@user/digit) (Remote host closed the connection) |
| 07:25:04 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 07:26:20 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 272 seconds) |
| 07:34:55 | → | alfiee joins (~alfiee@user/alfiee) |
| 07:35:41 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:39:08 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
| 07:39:58 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 07:50:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:54:57 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 07:55:34 | × | pabs3 quits (~pabs3@user/pabs3) (Read error: Connection reset by peer) |
| 07:56:03 | → | pabs3 joins (~pabs3@user/pabs3) |
| 08:00:06 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 08:00:44 | → | caconym joins (~caconym@user/caconym) |
| 08:01:18 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 08:06:05 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 08:10:44 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 08:12:02 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:20:49 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 08:21:06 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 08:24:00 | → | alfiee joins (~alfiee@user/alfiee) |
| 08:25:31 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 08:27:38 | → | Digit joins (~user@user/digit) |
| 08:28:45 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 265 seconds) |
| 08:28:58 | × | euleritian quits (~euleritia@dynamic-176-003-044-001.176.3.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:29:16 | → | euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
| 08:35:09 | × | euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 08:35:20 | → | euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
| 08:42:29 | × | tavare quits (~tavare@user/tavare) (Ping timeout: 248 seconds) |
| 08:56:29 | → | alexherbo2 joins (~alexherbo@2a02-8440-3504-a239-90d9-dcf7-f21b-c236.rev.sfr.net) |
| 08:58:10 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 09:04:45 | → | merijn joins (~merijn@77.242.116.146) |
| 09:06:31 | → | TMA joins (tma@twin.jikos.cz) |
| 09:07:05 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 09:12:03 | → | bliminse joins (~bliminse@user/bliminse) |
| 09:13:04 | → | alfiee joins (~alfiee@user/alfiee) |
| 09:17:42 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 09:19:54 | × | tnt1 quits (~Thunderbi@user/tnt1) (Remote host closed the connection) |
| 09:25:15 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:26:14 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 09:27:00 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 09:27:05 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 09:30:06 | → | gmg joins (~user@user/gehmehgeh) |
| 09:32:45 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 09:34:12 | × | CiaoSen quits (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) (Ping timeout: 252 seconds) |
| 09:40:07 | → | zmt01 joins (~zmt00@user/zmt00) |
| 09:43:33 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds) |
| 09:47:16 | → | sprotte24 joins (~sprotte24@p200300d16f0f5200f176db88f8d16a26.dip0.t-ipconnect.de) |
| 09:48:37 | → | __monty__ joins (~toonn@user/toonn) |
| 09:49:34 | → | td_ joins (~td@i53870904.versanet.de) |
| 09:58:05 | → | monochrm joins (trebla@216.138.220.146) |
| 09:58:39 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 260 seconds) |
| 09:58:40 | monochrm | is now known as monochrom |
| 09:59:13 | → | ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:14a7:7f2d:4515:55f0) |
| 10:01:49 | → | alfiee joins (~alfiee@user/alfiee) |
| 10:06:10 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 10:12:37 | → | Digitteknohippie joins (~user@user/digit) |
| 10:13:42 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 10:15:31 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f467932b3eddade0ab9.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 10:15:50 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f467932b3eddade0ab9.dip0.t-ipconnect.de) |
| 10:15:54 | <ski> | (euouae was gone) |
| 10:16:34 | → | CiaoSen joins (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) |
| 10:25:23 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 10:26:04 | → | gmg joins (~user@user/gehmehgeh) |
| 10:28:22 | × | xff0x_ quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 252 seconds) |
| 10:28:35 | × | alexherbo2 quits (~alexherbo@2a02-8440-3504-a239-90d9-dcf7-f21b-c236.rev.sfr.net) (Remote host closed the connection) |
| 10:42:02 | → | tnt1 joins (~Thunderbi@user/tnt1) |
| 10:43:16 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 10:43:30 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 10:45:23 | × | Digitteknohippie quits (~user@user/digit) (Ping timeout: 245 seconds) |
| 10:48:10 | → | tnt2 joins (~Thunderbi@user/tnt1) |
| 10:49:14 | × | tnt1 quits (~Thunderbi@user/tnt1) (Ping timeout: 260 seconds) |
| 10:49:14 | tnt2 | is now known as tnt1 |
| 10:51:14 | → | alfiee joins (~alfiee@user/alfiee) |
| 10:55:41 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 265 seconds) |
| 10:55:51 | → | SlackCoder joins (~SlackCode@64-94-63-8.ip.weststar.net.ky) |
| 10:57:53 | × | CiaoSen quits (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) (Ping timeout: 245 seconds) |
| 11:09:49 | → | chele joins (~chele@user/chele) |
| 11:20:38 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 11:20:44 | → | fp1 joins (~Thunderbi@2001:708:20:1406::1370) |
| 11:21:56 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 11:22:21 | → | xff0x joins (~xff0x@ai096095.d.east.v6connect.net) |
| 11:23:01 | fp1 | is now known as fp |
| 11:26:24 | × | sprotte24 quits (~sprotte24@p200300d16f0f5200f176db88f8d16a26.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 11:26:30 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (Quit: quit) |
| 11:29:46 | × | MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection) |
| 11:33:05 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Quit: fp) |
| 11:35:50 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 11:36:47 | → | MyNetAz joins (~MyNetAz@user/MyNetAz) |
| 11:39:00 | → | jespada joins (~jespada@2800:a4:2225:fa00:219b:97a5:1505:5c5f) |
| 11:40:57 | → | alfiee joins (~alfiee@user/alfiee) |
| 11:43:09 | × | mange quits (~user@user/mange) (Quit: Zzz...) |
| 11:45:24 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 11:48:28 | → | merijn joins (~merijn@77.242.116.146) |
| 11:49:00 | × | foul_owl quits (~kerry@185.203.219.82) (Read error: Connection reset by peer) |
| 11:55:29 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 248 seconds) |
| 11:56:09 | → | alexherbo2 joins (~alexherbo@2a02-8440-3504-a239-90d9-dcf7-f21b-c236.rev.sfr.net) |
| 12:00:04 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 12:02:11 | → | caconym joins (~caconym@user/caconym) |
| 12:02:21 | → | CiaoSen joins (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) |
| 12:05:21 | → | foul_owl joins (~kerry@193.42.0.124) |
| 12:08:50 | × | euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
| 12:09:26 | → | euleritian joins (~euleritia@dynamic-176-006-133-171.176.6.pool.telefonica.de) |
| 12:10:37 | → | Digit joins (~user@user/digit) |
| 12:15:54 | × | euleritian quits (~euleritia@dynamic-176-006-133-171.176.6.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 12:16:53 | → | euleritian joins (~euleritia@dynamic-176-000-008-052.176.0.pool.telefonica.de) |
| 12:18:39 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f467932b3eddade0ab9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 12:20:07 | → | sprotte24 joins (~sprotte24@p200300d16f0f5200ad248b1696410372.dip0.t-ipconnect.de) |
| 12:21:19 | → | rvalue- joins (~rvalue@user/rvalue) |
| 12:22:03 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 245 seconds) |
| 12:22:06 | → | danza joins (~danza@user/danza) |
| 12:22:46 | → | fp joins (~Thunderbi@2001:708:20:1406::1370) |
| 12:25:03 | → | pie_ joins (~pie_bnc@user/pie/x-2818909) |
| 12:26:10 | rvalue- | is now known as rvalue |
| 12:28:27 | → | acidjnk_new joins (~acidjnk@p200300d6e7283f4684c6011a1ea1e065.dip0.t-ipconnect.de) |
| 12:30:02 | → | alfiee joins (~alfiee@user/alfiee) |
| 12:30:20 | × | pie_ quits (~pie_bnc@user/pie/x-2818909) () |
| 12:31:46 | → | danz93642 joins (~danza@user/danza) |
| 12:33:56 | × | danza quits (~danza@user/danza) (Ping timeout: 244 seconds) |
| 12:34:15 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 246 seconds) |
| 12:35:12 | → | pie_ joins (~pie_bnc@user/pie/x-2818909) |
| 12:37:09 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 260 seconds) |
| 12:52:07 | <haskellbridge> | <eldritchcookie> do functions that are only used in TH splices count as evaluated to hpc? if not normally is there some way to get hpc to understand that i am testing those functions? |
| 12:52:08 | → | srazkvt joins (~srazkvt@user/srazkvt) |
| 12:53:00 | × | euleritian quits (~euleritia@dynamic-176-000-008-052.176.0.pool.telefonica.de) (Read error: Connection reset by peer) |
| 12:53:16 | × | jespada quits (~jespada@2800:a4:2225:fa00:219b:97a5:1505:5c5f) (Ping timeout: 244 seconds) |
| 12:53:18 | → | euleritian joins (~euleritia@77.23.250.232) |
| 12:57:29 | → | weary-traveler joins (~user@user/user363627) |
| 12:57:56 | → | jespada joins (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) |
| 13:00:33 | × | euleritian quits (~euleritia@77.23.250.232) (Ping timeout: 276 seconds) |
| 13:00:46 | → | euleritian joins (~euleritia@dynamic-176-000-008-052.176.0.pool.telefonica.de) |
| 13:01:32 | → | merijn joins (~merijn@77.242.116.146) |
| 13:02:57 | → | tabaqui1 joins (~root@87.200.129.102) |
| 13:05:40 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
| 13:06:13 | × | manwithluck quits (~manwithlu@194.177.28.164) (Ping timeout: 245 seconds) |
| 13:07:07 | → | manwithluck joins (~manwithlu@194.177.28.164) |
| 13:07:11 | × | danz93642 quits (~danza@user/danza) () |
| 13:12:40 | → | gentauro joins (~gentauro@user/gentauro) |
| 13:14:53 | × | euleritian quits (~euleritia@dynamic-176-000-008-052.176.0.pool.telefonica.de) (Ping timeout: 265 seconds) |
| 13:16:06 | → | euleritian joins (~euleritia@dynamic-176-001-213-030.176.1.pool.telefonica.de) |
| 13:19:07 | → | alfiee joins (~alfiee@user/alfiee) |
| 13:20:27 | × | SlackCoder quits (~SlackCode@64-94-63-8.ip.weststar.net.ky) (Remote host closed the connection) |
| 13:21:54 | × | CiaoSen quits (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) (Ping timeout: 252 seconds) |
| 13:23:49 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 13:28:03 | × | srazkvt quits (~srazkvt@user/srazkvt) (Quit: Client closed) |
| 13:30:41 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 13:33:04 | → | merijn joins (~merijn@77.242.116.146) |
| 13:34:02 | × | euleritian quits (~euleritia@dynamic-176-001-213-030.176.1.pool.telefonica.de) (Read error: Connection reset by peer) |
| 13:37:53 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 248 seconds) |
| 13:38:04 | → | euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
| 13:40:00 | × | sprotte24 quits (~sprotte24@p200300d16f0f5200ad248b1696410372.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 13:49:36 | → | merijn joins (~merijn@77.242.116.146) |
| 13:52:35 | → | weary-traveler joins (~user@user/user363627) |
| 13:58:25 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7283f4679c2ce7937ff2475.dip0.t-ipconnect.de) |
| 14:00:08 | → | pavonia joins (~user@user/siracusa) |
| 14:01:24 | × | acidjnk_new quits (~acidjnk@p200300d6e7283f4684c6011a1ea1e065.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 14:08:31 | → | alfiee joins (~alfiee@user/alfiee) |
| 14:12:53 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 265 seconds) |
| 14:16:25 | → | alx741 joins (~alx741@186.33.188.229) |
| 14:27:53 | → | Square2 joins (~Square4@user/square) |
| 14:32:51 | × | poscat quits (~poscat@user/poscat) (Ping timeout: 252 seconds) |
| 14:33:30 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 244 seconds) |
| 14:34:12 | → | poscat joins (~poscat@user/poscat) |
| 14:38:07 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 14:39:51 | haritz | is now known as saimazoon |
| 14:40:00 | × | foul_owl quits (~kerry@193.42.0.124) (Ping timeout: 252 seconds) |
| 14:40:37 | → | gentauro joins (~gentauro@user/gentauro) |
| 14:50:32 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 14:52:30 | → | foul_owl joins (~kerry@193.42.0.124) |
| 14:54:50 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 14:55:08 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 14:57:15 | → | alfiee joins (~alfiee@user/alfiee) |
| 14:57:21 | × | euleritian quits (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
| 14:57:44 | × | yin quits (~yin@user/zero) (Remote host closed the connection) |
| 14:57:55 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 14:58:14 | → | euleritian joins (~euleritia@dynamic-176-001-213-030.176.1.pool.telefonica.de) |
| 15:01:42 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
| 15:09:42 | × | acidjnk_new3 quits (~acidjnk@p200300d6e7283f4679c2ce7937ff2475.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 15:12:55 | → | rstromlund joins (~user@user/rstromlund) |
| 15:19:22 | × | jespada quits (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 15:20:46 | → | jespada joins (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) |
| 15:22:26 | × | jespada quits (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) (Client Quit) |
| 15:25:18 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:33:19 | <glguy> | I wouldn't expect there to be one |
| 15:37:05 | × | divya quits (divya@140.238.251.170) (Remote host closed the connection) |
| 15:37:36 | → | Guest89 joins (~Guest89@2a02:8206:7b34:9c00:8aeb:3316:75cf:6455) |
| 15:40:25 | → | Guest64 joins (~Guest64@2600:387:f:7e1b::1) |
| 15:40:46 | → | divya joins (divya@140.238.251.170) |
| 15:45:45 | × | noteness_ quits (~noteness@user/noteness) (Quit: bye) |
| 15:45:46 | × | rvalue quits (~rvalue@user/rvalue) (Remote host closed the connection) |
| 15:45:59 | → | noteness joins (~noteness@user/noteness) |
| 15:46:10 | → | rvalue joins (~rvalue@user/rvalue) |
| 15:47:00 | → | alfiee joins (~alfiee@user/alfiee) |
| 15:49:12 | → | SlackCoder joins (~SlackCode@208.26.70.132) |
| 15:51:24 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 15:54:04 | × | euleritian quits (~euleritia@dynamic-176-001-213-030.176.1.pool.telefonica.de) (Read error: Connection reset by peer) |
| 15:54:21 | → | euleritian joins (~euleritia@77.23.250.232) |
| 15:56:19 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7283f4679c2ce7937ff2475.dip0.t-ipconnect.de) |
| 15:57:41 | × | Guest64 quits (~Guest64@2600:387:f:7e1b::1) (Killed (ozone (No Spam))) |
| 15:59:05 | × | euleritian quits (~euleritia@77.23.250.232) (Read error: Connection reset by peer) |
| 15:59:22 | → | Guest64 joins (~Guest64@68-251-36-232.lightspeed.wepbfl.sbcglobal.net) |
| 15:59:48 | → | euleritian joins (~euleritia@77.23.250.232) |
| 16:00:07 | → | danza joins (~danza@user/danza) |
| 16:00:55 | × | Guest64 quits (~Guest64@68-251-36-232.lightspeed.wepbfl.sbcglobal.net) (Killed (ozone (No Spam))) |
| 16:04:52 | × | zaquest quits (~notzaques@5.130.79.72) (Quit: Leaving) |
| 16:18:14 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 16:18:29 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 248 seconds) |
| 16:19:22 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 16:20:14 | × | Guest89 quits (~Guest89@2a02:8206:7b34:9c00:8aeb:3316:75cf:6455) (Quit: Client closed) |
| 16:22:22 | × | SlackCoder quits (~SlackCode@208.26.70.132) (Quit: Leaving) |
| 16:23:02 | → | jespada joins (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) |
| 16:26:13 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:14a7:7f2d:4515:55f0) (Remote host closed the connection) |
| 16:26:26 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 244 seconds) |
| 16:27:14 | × | alexherbo2 quits (~alexherbo@2a02-8440-3504-a239-90d9-dcf7-f21b-c236.rev.sfr.net) (Remote host closed the connection) |
| 16:30:55 | → | alexherbo2 joins (~alexherbo@2a02-8440-3504-afc6-692a-5599-d188-3ca4.rev.sfr.net) |
| 16:31:47 | → | danz94407 joins (~danza@user/danza) |
| 16:33:27 | × | danza quits (~danza@user/danza) (Read error: Connection reset by peer) |
| 16:36:37 | → | ft joins (~ft@p3e9bcd97.dip0.t-ipconnect.de) |
| 16:36:50 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2) |
| 16:37:05 | → | alfiee joins (~alfiee@user/alfiee) |
| 16:41:25 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 16:50:34 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:53:53 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 16:54:36 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 16:57:10 | → | Guest64 joins (~Guest64@133.cleveland-21-23rs.oh.dial-access.att.net) |
| 16:57:30 | → | ColinRobinson joins (~juan@user/JuanDaugherty) |
| 16:57:52 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 16:57:59 | × | alexherbo2 quits (~alexherbo@2a02-8440-3504-afc6-692a-5599-d188-3ca4.rev.sfr.net) (Remote host closed the connection) |
| 17:01:06 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 17:01:34 | × | omegatron quits (~some@user/omegatron) (Ping timeout: 265 seconds) |
| 17:02:50 | × | Guest64 quits (~Guest64@133.cleveland-21-23rs.oh.dial-access.att.net) (Quit: Client closed) |
| 17:03:08 | → | Guest64 joins (~Guest64@133.cleveland-21-23rs.oh.dial-access.att.net) |
| 17:08:52 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 17:09:22 | × | Guest64 quits (~Guest64@133.cleveland-21-23rs.oh.dial-access.att.net) (K-Lined) |
| 17:09:25 | → | rvalue joins (~rvalue@user/rvalue) |
| 17:12:25 | × | acidjnk_new3 quits (~acidjnk@p200300d6e7283f4679c2ce7937ff2475.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 17:20:04 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 17:23:01 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 248 seconds) |
| 17:24:19 | × | zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
| 17:25:02 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 17:25:51 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 17:26:30 | → | alfiee joins (~alfiee@user/alfiee) |
| 17:27:02 | × | danz94407 quits (~danza@user/danza) (Remote host closed the connection) |
| 17:27:18 | → | danza joins (~danza@user/danza) |
| 17:31:03 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 265 seconds) |
| 17:40:26 | × | ColinRobinson quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 17:42:02 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 17:54:29 | × | todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in) |
| 17:55:15 | × | Midjak quits (~MarciZ@82.66.147.146) (Read error: Connection reset by peer) |
| 17:55:28 | → | todi joins (~todi@p57803331.dip0.t-ipconnect.de) |
| 17:56:06 | → | Midjak joins (~MarciZ@82.66.147.146) |
| 18:00:56 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 272 seconds) |
| 18:05:25 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) |
| 18:06:11 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 18:11:07 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 18:14:55 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 18:15:54 | → | alfiee joins (~alfiee@user/alfiee) |
| 18:20:16 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 18:20:37 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds) |
| 18:20:44 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 18:23:42 | Lord_of_Life_ | is now known as Lord_of_Life |
| 18:25:54 | × | euleritian quits (~euleritia@77.23.250.232) (Read error: Connection reset by peer) |
| 18:28:50 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7283f4644f622875d25c5df.dip0.t-ipconnect.de) |
| 18:29:29 | → | euleritian joins (~euleritia@ip4d17fae8.dynamic.kabel-deutschland.de) |
| 18:31:24 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 264 seconds) |
| 18:35:54 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 260 seconds) |
| 18:40:38 | → | alp joins (~alp@2001:861:8ca0:4940:465c:30a2:2211:b30f) |
| 18:43:25 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 18:43:39 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 18:43:47 | × | jespada quits (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 18:44:59 | → | jespada joins (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) |
| 18:48:00 | → | SlackCoder joins (~SlackCode@remote.nationalgallery.org.ky) |
| 18:48:41 | → | euouae joins (~euouae@user/euouae) |
| 18:49:41 | × | SlackCoder quits (~SlackCode@remote.nationalgallery.org.ky) (Client Quit) |
| 18:49:47 | <euouae> | Hello, I have this small code to define my own monad with <https://paste.tomsmeding.com/KAANvlR5>. When I try `C1 (1 :: Int) >>= (\x -> C1 $ x + 1)` I get that the result of the evaluation is `C1 (1 :: Int) >>= (\x -> C1 $ x + 1) :: MyMonad Int`. |
| 18:50:29 | <euouae> | But why is it not C1 2? I've found that deriving Show will make it say C1 2. I've also found that deriving Eq will make it == C1 2. But is it just stylistic or is there something deeper here with regards to evaluation? |
| 18:51:51 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 18:56:33 | <geekosaur> | that doesn't look like the result of evaluation, only of typechecking? |
| 18:58:32 | <ncf> | euouae: they're not called anything particular since there aren't any. |
| 18:58:33 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 18:58:45 | <ncf> | (assuming f, a, b are universally quantified) |
| 18:58:54 | <euouae> | It's what happens when I hit enter in the repl geekosaur -- ncf not sure what you're talking about |
| 18:59:06 | <ncf> | <euouae> Hello functions of the type Functor f => f a -> f b, what are they called? |
| 18:59:24 | <mauke> | euouae: what repl? |
| 18:59:31 | <euouae> | ncf, oh yeah I get what you mean, thank you |
| 18:59:52 | <euouae> | mauke: Interactive-Haskell in Emacs |
| 19:00:42 | × | zlqrvx quits (~zlqrvx@user/zlqrvx) (Ping timeout: 252 seconds) |
| 19:01:51 | <geekosaur> | fwiw I tried that here and I got a "No instance for `Show (MyMonad Int)` |
| 19:01:56 | <geekosaur> | which I would expect |
| 19:02:18 | <euouae> | I see, ok. It's just a style thing, it's not related to evaluation |
| 19:02:29 | <euouae> | For w/e reason my repl shows it like it does |
| 19:02:45 | <geekosaur> | prob ably defaults to showing the type if it can't show the value |
| 19:02:54 | <euouae> | expr + type yeah |
| 19:04:09 | <mauke> | :t 1 + 2 * 3 |
| 19:04:10 | <lambdabot> | Num a => a |
| 19:04:58 | → | alfiee joins (~alfiee@user/alfiee) |
| 19:05:10 | → | zlqrvx joins (~zlqrvx@user/zlqrvx) |
| 19:09:08 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
| 19:09:54 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:10:54 | → | Pozyomka_ joins (~pyon@user/pyon) |
| 19:11:42 | × | Pozyomka quits (~pyon@user/pyon) (Ping timeout: 276 seconds) |
| 19:12:42 | <euouae> | Now if I have a `data MyMonad = C Int Int`, how can I make it monadic in the second argument? How can I make it monadic in the first argument? |
| 19:13:04 | <euouae> | something like `instance Functor (MyMonad Int) where` to begin with doesn't seem to work |
| 19:13:08 | <[exa]> | euouae: but MyMonad has no arguments? |
| 19:13:23 | <euouae> | Doesn't its constructor have two arguments |
| 19:13:31 | <euouae> | Ah, so you need it to be a * -> * |
| 19:13:53 | <[exa]> | that's the data constructor, that's ok. You need a type-level parameter though, because `fmap` and other functions are supposed to mess with that type |
| 19:14:02 | <[exa]> | (so they need the variable there) |
| 19:14:24 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 19:15:07 | <euouae> | well let's revise to `data MyMonad a b = C a b` |
| 19:15:23 | <[exa]> | (e.g. `fmap length` normally has type Functor f => f [a] -> f Int. If you used MyMonad instead of `f`, it wouldn't have a space to store the information about "what's inside" |
| 19:15:35 | <[exa]> | yap that should work |
| 19:16:02 | <euouae> | what are the right instance definitions for Functor, etc? I can't use 'MyMonad' because it is not the right kind |
| 19:16:21 | <tomsmeding> | 'Monad' (and 'Functor', etc.) requires its argument to be of kind Type -> Type (traditionally written * -> *) |
| 19:16:23 | <euouae> | oh, instance Functor (MyMonad a) where works |
| 19:16:28 | → | alexherbo2 joins (~alexherbo@2a02-8440-3504-afc6-21c9-80c8-175a-acbd.rev.sfr.net) |
| 19:16:28 | × | MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection) |
| 19:16:34 | <tomsmeding> | that means that it should be a thing that takes one more type argument, and then produces an actual type |
| 19:16:53 | <[exa]> | euouae: it's quite useful to start with the standard ones, for example a good workalike for your MyMonad would be a tuple type ( instance Functor ((,) a) ) |
| 19:16:57 | <tomsmeding> | that "one" there is significant: it means that if a data type is an instance of Functor/Applicative/Monad, it is in its _last_ type parameter |
| 19:17:14 | <euouae> | yeah I get that there's an order involved |
| 19:17:26 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:17:47 | <euouae> | So my whole exercise today is to try and shed some light into megaparsec's parser types. I had the intuition (maybe faulty?) that monads act like composable state machines |
| 19:17:49 | <tomsmeding> | `data MyMonad a b` cannot be a "monad in 'a'", it will always be "in 'b'", and the instance will say (MyMonad a) |
| 19:18:05 | <euouae> | where you feed the machine 'stuff' with >>= and it evolves. Maybe it's the wrong way to think about it? |
| 19:18:26 | <tomsmeding> | a State monad is essentially a composable state machine, yes |
| 19:18:29 | <euouae> | tomsmeding: I get it, * is not the same kind as (* -> *) |
| 19:18:31 | <tomsmeding> | not necessarily a _finite_ state machine |
| 19:18:47 | <tomsmeding> | a parser monad is typically a combination between at least a State monad and an exception monad |
| 19:19:05 | <euouae> | but why do you qualify with State and exception, aren't all monads essentially composable state machines? |
| 19:19:10 | <tomsmeding> | sometimes also a nondeterminism monad if you want to return all possible parses of a particular input (megaparsec doesn't do that) |
| 19:19:12 | <euouae> | it seems evolutoin comes with >>= |
| 19:19:20 | <tomsmeding> | `Maybe` is not a state machine |
| 19:19:27 | <euouae> | Why not? |
| 19:19:34 | <tomsmeding> | what's the state? |
| 19:19:52 | <euouae> | its two constructors |
| 19:20:04 | <tomsmeding> | a function `a -> Maybe b`, when seen as a monadic function, is a function from `a` to `b` that might also crash |
| 19:20:08 | → | Square joins (~Square@user/square) |
| 19:20:25 | <euouae> | Maybe I have a broader idea of state machine than you or maybe I'm wrong |
| 19:20:34 | <tomsmeding> | a function `a -> Either String b`, in the same way, is a function from `a` to `b` that might also throw an error string |
| 19:20:51 | <mauke> | I don't really see how >>= is feeding |
| 19:20:52 | <[exa]> | euouae: if restricted to "stateful" monads I think the state machine intuition would kinda work, it's just the thing that there are much more kinds of monads |
| 19:20:55 | <tomsmeding> | a function `a -> State s b` is a function that maps `a` to `b` and in the mean time modifies a state of type `s` |
| 19:21:06 | <tomsmeding> | this last one can decently be called a state machine |
| 19:21:36 | <euouae> | I'm not familiar with `State` yet, so before we go there, maybe if you can tell me a bit more about why Maybe is not a state machine |
| 19:21:57 | <tomsmeding> | euouae: I see a state machine as a box that has some internal state, and that you can send events to and it responds to those events and updates its state |
| 19:22:05 | <euouae> | mauke, well e.g. `Just 1 >>= (\x -> x + 1)` will give you Just 2. You had the state Just 1; now you have the state Just 2 with input the x+1 calculation. |
| 19:22:06 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 19:22:13 | <[exa]> | you can look at Maybe as a state machine too, with 2 states (the one that carries data and the one that has failed already) |
| 19:22:15 | <tomsmeding> | > Just 1 >>= \x -> Just (x + 1) |
| 19:22:17 | <lambdabot> | Just 2 |
| 19:22:19 | <tomsmeding> | you need the second Just |
| 19:22:36 | <tomsmeding> | euouae: if you have a function `Int -> Int`, is that also a state machine? |
| 19:22:53 | <tomsmeding> | you had a state of type Int, and you get back a new one |
| 19:23:14 | <euouae> | tomsmeding: I see your point about it being stateless; but if the Int -> Int function is algorithmic, it is the computation of a state machine |
| 19:23:24 | × | Square2 quits (~Square4@user/square) (Ping timeout: 246 seconds) |
| 19:23:26 | <tomsmeding> | at that point all programs are state machines :p |
| 19:23:29 | → | MyNetAz joins (~MyNetAz@user/MyNetAz) |
| 19:23:32 | <[exa]> | <3 |
| 19:23:33 | <tomsmeding> | and it's not a useful label to attach to programs any more |
| 19:23:34 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 19:23:45 | <mauke> | in particular, it's no longer specific to monads or >>= |
| 19:23:52 | <euouae> | Yeah but 'composable' state machines is where I like the idea -- that';s what makes monads different |
| 19:24:01 | <tomsmeding> | functions are the ultimate composable thing! |
| 19:24:06 | <euouae> | Well, perhaps it is faulty intuition. |
| 19:24:08 | <mauke> | > ((* 2) . (+ 1)) 3 |
| 19:24:10 | <lambdabot> | 8 |
| 19:24:12 | <mauke> | composes fine |
| 19:24:33 | <euouae> | I don't mean functionally composable, I mean that their state machine rule sets compose |
| 19:24:46 | <mauke> | where do you see a rule set? |
| 19:24:54 | <euouae> | In the definition of >>= in the instance of Monad |
| 19:25:11 | <tomsmeding> | the only intuition that I know for monads that can still sensibly be called an "intuition", but nevertheless scales to the vast majority of monads (if not all of them), is "overloaded semicolon" |
| 19:25:26 | <tomsmeding> | the more concrete / simple you make your intuition of monads, the less actual monads it applies to |
| 19:25:40 | <mauke> | look, it's simple: magic boxes |
| 19:25:48 | <tomsmeding> | "burrito" works fine for a State monad, but it makes little sense for the Maybe monad already |
| 19:26:00 | <mauke> | anything that doesn't fit into the box model just uses more magic |
| 19:26:15 | <tomsmeding> | mauke: I'd call that one not even an intuition any more. :P |
| 19:26:28 | <mauke> | works for me! |
| 19:27:08 | <euouae> | maybe I should look more into the state monad at this point |
| 19:27:15 | <mauke> | have you never opened a box and found N copies of yourself in N different parallel universes? |
| 19:27:43 | <tomsmeding> | not consciously |
| 19:27:53 | → | CiaoSen joins (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) |
| 19:29:04 | <euouae> | btw with Int -> Int you'd have to restrict to recursively defined functions, i.e. computable |
| 19:29:30 | <euouae> | I don't know if state machines can be noncomputable, because I think of them in terms of rule sets (algorithmic) |
| 19:29:36 | <mauke> | how do I wrote an uncomputable function |
| 19:29:49 | <euouae> | I think Goedel's numbering will help you |
| 19:32:48 | × | alexherbo2 quits (~alexherbo@2a02-8440-3504-afc6-21c9-80c8-175a-acbd.rev.sfr.net) (Remote host closed the connection) |
| 19:32:48 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:33:07 | → | alexherbo2 joins (~alexherbo@2a02-8440-3504-afc6-21c9-80c8-175a-acbd.rev.sfr.net) |
| 19:34:46 | <[exa]> | euouae: btw are you familiar with how applicatives work? these are essentially the same thing but waaaaaaaaaaaaay more accessible for intuition |
| 19:35:12 | <tomsmeding> | euouae: if you think of Int -> Int as a state transformer, then a monad is a state transformer _that also does something else_ |
| 19:35:38 | <[exa]> | > Just (+) <*> Just 1 <*> Just 3 -- euouae try replacing one with Nothing |
| 19:35:40 | <lambdabot> | Just 4 |
| 19:35:52 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 19:36:17 | <tomsmeding> | for most monads, like Maybe, Either, State, etc., that "do something else" is actually implemented under the hood with normal functions; for things like IO, that "do something else" is unsafe magic |
| 19:37:02 | <tomsmeding> | but in the land of the monad, when you're not thinking of how the monad is implemented, you're writing functions (state transformers) that also have an additional _effect_ apart from just mapping its input to an output |
| 19:37:20 | <tomsmeding> | in the Maybe monad, you map inputs to an output _but you may also crash_ |
| 19:37:33 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 19:37:42 | <tomsmeding> | in the (State s) monad, you map inputs to an output _but you may also read/write some additional state of type 's'_ |
| 19:37:44 | × | Digit quits (~user@user/digit) (Ping timeout: 260 seconds) |
| 19:39:07 | <tomsmeding> | something like `runState :: State s a -> s -> (a, s)` allows you to lift the veil and expose the actual pure functions underneath |
| 19:39:52 | <tomsmeding> | in this case turning a computation which produces an 'a' into a function that takes an initial additional-state, and produces that 'a' together with the final additional-state |
| 19:41:28 | <tomsmeding> | the equivalent of a "run" function for the Maybe monad would be to simply case-match on the Maybe value, showing you whether the computation produced a result (Just) or crashed (Nothing) |
| 19:41:50 | <tomsmeding> | _inside_ the Maybe monad, you cannot see what happened, you're just part of a computation that may crash at some point |
| 19:41:59 | <tomsmeding> | it's like the Matrix |
| 19:42:14 | <tomsmeding> | (which is a dangerous analogy to make because I haven't actually seen that film) |
| 19:43:14 | <tomsmeding> | euouae: the intuition I'm trying to convey here is completely unrelated to what [exa] was trying to get at with the mention of Applicative. :P |
| 19:43:36 | <tomsmeding> | mine here is a programmer's intuition, not an algebraic one |
| 19:43:51 | <tomsmeding> | algebraically, a monad is just a monoid in the category of endofunctors |
| 19:45:36 | <euouae> | you haven't seen the matrix? the weekend is approaching. |
| 19:45:37 | → | Digit joins (~user@user/digit) |
| 19:46:16 | <euouae> | I'm also trying to get the programming intuition; as for the category stuff, I mostly don't have any intuition, apart for very small things I've figured out on my own (but unrelated to programming?) |
| 19:46:24 | <tomsmeding> | (>>=) in monadic land corresponds to (&) = flip ($) in normal function land; (>=>) in monadic land corresponds to flip (.) in normal function land |
| 19:46:59 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 19:47:00 | <tomsmeding> | :t flip ($) |
| 19:47:01 | <lambdabot> | a -> (a -> c) -> c |
| 19:47:04 | <tomsmeding> | :t (>>=) |
| 19:47:04 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 19:47:14 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 19:47:39 | <tomsmeding> | the things are flipped because unlike with normal functions, in monadic land, order of execution matters |
| 19:48:10 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 19:48:50 | <tomsmeding> | (>>=) executes the argument (performing any side effects if necessary), and then applies the function to the result |
| 19:49:02 | <euouae> | I'm going to think about this more. There's things in Haskell that scare me away but there's other things I like (after coming back to it) and I want to try some parsing stuff with megaparsec |
| 19:49:35 | <euouae> | In particular my IDE experience is really, really nice. I'll later look into debugging, but if that's good too then awesome |
| 19:49:48 | <tomsmeding> | debugging haskell is honestly kind of crappy |
| 19:49:56 | <tomsmeding> | the ghci debugger exists but few people use it |
| 19:49:57 | <euouae> | hm... well. can't have it all. |
| 19:50:17 | <euouae> | for example is there a way to query what the type checker thinks of an expression in the middle of a big expression? |
| 19:50:19 | <euouae> | that'd be type debugging |
| 19:50:33 | <tomsmeding> | oh for sure, the language server supports type queries |
| 19:50:55 | <nitrix> | Most LSP integrations will tell you that. You can also put a type hole with _ and see what the compiler thinks. |
| 19:50:59 | <tomsmeding> | for runtime debugging, the most reliable go-to is still "printf debugging" with Debug.Trace |
| 19:51:17 | → | zmt00 joins (~zmt00@user/zmt00) |
| 19:51:41 | <euouae> | I'll come to that later at some point. Printf debugging is not the best but it is what it is |
| 19:51:51 | <nitrix> | > 1 + _ |
| 19:51:56 | <lambdabot> | error: |
| 19:51:56 | <lambdabot> | • Found hole: _ :: a |
| 19:51:56 | <lambdabot> | Where: ‘a’ is a rigid type variable bound by |
| 19:52:03 | <tomsmeding> | > "hi" ++ _ |
| 19:52:07 | <lambdabot> | error: |
| 19:52:07 | <lambdabot> | • Found hole: _ :: [Char] |
| 19:52:07 | <lambdabot> | • In the second argument of ‘(++)’, namely ‘_’ |
| 19:52:22 | <euouae> | Ah nice tha'ts a cool trick thank you |
| 19:52:28 | <euouae> | yeah because I wanted something for the REPL too |
| 19:52:33 | <euouae> | not just lsp stuff in files |
| 19:52:37 | <nitrix> | I guess the Num a => a on the other lines gets truncated in the response. |
| 19:52:43 | <tomsmeding> | % :t "hi" |
| 19:52:43 | <yahb2> | "hi" :: String |
| 19:52:53 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 19:52:55 | <tomsmeding> | euouae: ':t' shows the type of an expression |
| 19:53:09 | <euouae> | yup, can't use it in the middle of stuff though |
| 19:53:23 | <euouae> | where I'm trying to understand what the type checker is "thinking" |
| 19:53:38 | <euouae> | in terms of ... I'm lacking the terms, but whatever the polymorphism and other derivations are |
| 19:53:40 | <nitrix> | Type inference is the term you're looking for. |
| 19:54:05 | <euouae> | right unfortunately there's normal debugging and type debugging when you write haskell |
| 19:54:10 | <euouae> | I'm sure it gets better with practice |
| 19:56:02 | × | danza quits (~danza@user/danza) (Remote host closed the connection) |
| 19:56:18 | → | danza joins (~danza@user/danza) |
| 19:56:22 | → | alfiee joins (~alfiee@user/alfiee) |
| 19:57:51 | <nitrix> | Normal debugging yes, type debugging no. The more you know, the more tempted you are to use sophisticated types. |
| 20:00:03 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 20:00:41 | → | caconym joins (~caconym@user/caconym) |
| 20:00:49 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
| 20:01:21 | → | zmt01 joins (~zmt00@user/zmt00) |
| 20:03:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 20:04:44 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
| 20:08:14 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 20:09:31 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds) |
| 20:18:55 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 20:25:39 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 20:28:29 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 20:31:10 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 20:31:38 | × | acidjnk_new3 quits (~acidjnk@p200300d6e7283f4644f622875d25c5df.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 20:31:57 | → | danz96699 joins (~danza@user/danza) |
| 20:34:16 | → | weary-traveler joins (~user@user/user363627) |
| 20:34:50 | × | danza quits (~danza@user/danza) (Ping timeout: 272 seconds) |
| 20:37:53 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7283f4679216c0ad7f4b91d.dip0.t-ipconnect.de) |
| 20:38:50 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 20:43:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 20:45:27 | → | alfiee joins (~alfiee@user/alfiee) |
| 20:47:19 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 260 seconds) |
| 20:48:11 | × | Midjak quits (~MarciZ@82.66.147.146) (Quit: Leaving) |
| 20:50:04 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 20:52:24 | × | danz96699 quits (~danza@user/danza) (Remote host closed the connection) |
| 20:52:40 | → | danza joins (~danza@user/danza) |
| 20:55:29 | × | CiaoSen quits (~Jura@2a05:5800:241:f200:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds) |
| 20:56:33 | × | takuan quits (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection) |
| 20:58:50 | × | danza quits (~danza@user/danza) (Remote host closed the connection) |
| 20:59:23 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 21:01:34 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 21:03:51 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 21:04:51 | × | alx741 quits (~alx741@186.33.188.229) (Quit: alx741) |
| 21:06:23 | → | danza joins (~danza@user/danza) |
| 21:08:45 | → | nullie joins (~nullie@nuremberg.nullie.name) |
| 21:09:03 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 21:09:19 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 21:14:27 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 21:14:40 | × | alexherbo2 quits (~alexherbo@2a02-8440-3504-afc6-21c9-80c8-175a-acbd.rev.sfr.net) (Remote host closed the connection) |
| 21:15:04 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 21:15:51 | → | alexherbo2 joins (~alexherbo@2a02-8440-3504-afc6-514f-10cf-f60a-1cf5.rev.sfr.net) |
| 21:19:27 | × | alexherbo2 quits (~alexherbo@2a02-8440-3504-afc6-514f-10cf-f60a-1cf5.rev.sfr.net) (Remote host closed the connection) |
| 21:23:30 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 21:34:29 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 21:34:39 | × | jespada quits (~jespada@2800:a4:220c:6700:19eb:694f:b602:3bcb) (Ping timeout: 246 seconds) |
| 21:35:10 | → | alfiee joins (~alfiee@user/alfiee) |
| 21:37:03 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
| 21:39:06 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 21:39:31 | <dminuoso> | euouae: The general technique to avoid or deal with typing errors generally, is to annotate as much as you can. |
| 21:39:39 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 21:39:40 | <dminuoso> | The more the type checker is constrained, the less it can infer and generalize. |
| 21:40:46 | <dminuoso> | Maybe it helps to think of generalization not as something that lets you avoid writing type signatures, but a feature that lets you write quantified types very liberally. |
| 21:41:20 | → | sprotte24 joins (~sprotte24@p200300d16f0f520069bfd2b9cee1df34.dip0.t-ipconnect.de) |
| 21:41:56 | <dminuoso> | It's an unfortunate consequence of advanced type systems, that you get type unification errors in seemingly random places unrelated to the mistake. |
| 21:42:20 | <dminuoso> | But by annotating as much as you can, you greatly limit how far these unification errors can propagate. |
| 21:42:56 | <dminuoso> | Plus, the type annotations help document your code, so twice the reason to annotate everything with a type. |
| 21:45:01 | <euouae> | interesting, will do |
| 21:47:29 | <dminuoso> | euouae: There's some potential to improve GHC errors that we bring up every now and then. Some ML languages have whats called a type error slicer, which essentially marks all the spots in your program that somehow contributed to a given type error. |
| 21:47:53 | <dminuoso> | It still would not necessarily pin point to the cause, but you could at least identify all the moving parts that dont fit for some reason. |
| 21:48:10 | <dminuoso> | But alas, there is not even a WIP for this in GHC. |
| 21:48:40 | <euouae> | That's exactly the situation that happened some days ago when I asked a megaparsec question here and you answered it |
| 21:48:52 | <euouae> | it was some type inference issue where the error was unrelated to the actual issue |
| 21:49:41 | <dminuoso> | euouae: In hindsight, it was quite related. |
| 21:49:42 | <haskellbridge> | <sm> euouae: would adding more type signatures have helped ? It's very good advice |
| 21:49:52 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 21:50:39 | <euouae> | dminuoso: experienced haskellers obviously see it differently from novices ;) if you know a lot of C++ you can figure out what the template errors are as well... |
| 21:51:10 | <dminuoso> | euouae: I think the error was not that complicated. The main reason it took me a moment, was because I had no mental picture of the types involved. |
| 21:51:29 | <dminuoso> | C++ template instantiation errors are.. something else. |
| 21:51:31 | <euouae> | well my point is that /you/ could do it and I couldn't :P |
| 21:51:36 | <dminuoso> | Fair. |
| 21:52:11 | <haskellbridge> | <sm> troubleshooting complex problems over irc is pretty hard sometimes |
| 21:52:49 | × | connrs quits (~connrs@user/connrs) (Quit: ZNC 1.9.1 - https://znc.in) |
| 21:55:01 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds) |
| 21:56:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 21:58:07 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 21:58:27 | → | monochrm joins (trebla@216.138.220.146) |
| 21:59:46 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 248 seconds) |
| 21:59:46 | monochrm | is now known as monochrom |
| 22:02:59 | → | connrs joins (~connrs@user/connrs) |
| 22:04:07 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 22:06:00 | × | danza quits (~danza@user/danza) () |
| 22:07:54 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:12:29 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 22:14:34 | × | michalz quits (~michalz@185.246.207.197) (Remote host closed the connection) |
| 22:19:38 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood) |
| 22:21:22 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 22:23:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:24:07 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 22:24:34 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 22:25:15 | → | alfiee joins (~alfiee@user/alfiee) |
| 22:27:29 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 22:28:30 | × | mulk quits (~mulk@pd9514894.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 22:29:35 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood) |
| 22:29:37 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
| 22:30:37 | → | mulk joins (~mulk@pd95141d7.dip0.t-ipconnect.de) |
| 22:33:06 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 22:36:18 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 22:38:38 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:40:21 | → | alx741 joins (~alx741@186.33.188.229) |
| 22:43:10 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 22:45:16 | <euouae> | Something I don't understand is how come the transformer package provides Control.Monad.Trans.State? Can packages provide stuff under Control.*? (Isn't it a "core/standard" namespace?) |
| 22:45:44 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 22:48:51 | <davean> | euouae: no such thing |
| 22:49:21 | <euouae> | So the imports are structured around central concepts like Control/Data |
| 22:49:32 | <euouae> | OK, ty |
| 22:50:09 | <EvanR> | Control and Data are certainly names |
| 22:50:26 | <EvanR> | I don't think the concepts make much sense for what's been placed under them |
| 22:50:38 | <EvanR> | just hysterical raisins |
| 22:51:25 | <dminuoso> | euouae: These namespaces are not sealed. |
| 22:51:39 | <EvanR> | in haskell data structures are used for control |
| 22:51:46 | <dminuoso> | In fact, consider module names just arbitrary names. Some follow conventions, others dont. |
| 22:52:34 | <dminuoso> | Heck, you could even have two packages use the same module name, say `Control.Monad` |
| 22:52:43 | <euouae> | a bit of chaos |
| 22:53:04 | <dminuoso> | euouae: In practice that very rarely happens, and we have mechanisms to resolve ambiguiity. |
| 22:53:10 | <euouae> | laissez faire stuff |
| 22:53:59 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 22:55:37 | × | Googulator quits (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) (Quit: Client closed) |
| 22:55:42 | × | alx741 quits (~alx741@186.33.188.229) (Quit: alx741) |
| 22:55:54 | → | Googulator joins (~Googulato@2a01-036d-0106-1666-e945-fd21-b920-9aa7.pool6.digikabel.hu) |
| 22:56:49 | <davean> | Having heirarchical names is just an extension for convinience. |
| 22:58:35 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 23:04:43 | → | weary-traveler joins (~user@user/user363627) |
| 23:06:53 | <glguy> | My favorite Data. misuse is Data.Kind |
| 23:07:03 | <tomsmeding> | (re mechanisms to resolve ambiguity: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/package_qualified_imports.html#extension-PackageImports ) |
| 23:09:21 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:10:58 | <dminuoso> | Relatedly https://downloads.haskell.org/ghc/latest/docs/users_guide/packages.html#package-thinning-and-renaming |
| 23:11:36 | <dminuoso> | Unsure how controllable that is via cabal-install |
| 23:12:28 | <geekosaur> | "mixins" should handle both |
| 23:12:53 | × | eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 245 seconds) |
| 23:13:43 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 23:14:40 | → | alfiee joins (~alfiee@user/alfiee) |
| 23:14:57 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
| 23:18:50 | <dminuoso> | A while ago transformers has received these nice diagrams to visualize what the respective transformers do: https://hackage.haskell.org/package/transformers-0.6.1.2/docs/Control-Monad-Trans-Writer-CPS.html |
| 23:19:06 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 23:19:09 | <dminuoso> | We're just missing a diagram for Cont. Cant be that hard, right? :-) |
| 23:19:28 | <geekosaur> | i,i "Cont be that hard" |
| 23:19:37 | <dminuoso> | Heh. |
| 23:21:02 | <EvanR> | haskell is famous for laissez faire programming. Terrible I'm outta here |
| 23:21:02 | <int-e> | please pass all the details to `const "I don't want to hear it."` |
| 23:21:15 | <EvanR> | looking for a language for more bondage and discipline |
| 23:22:30 | <geekosaur> | surely there's an appropriate DT language |
| 23:23:03 | × | rstromlund quits (~user@user/rstromlund) (Ping timeout: 252 seconds) |
| 23:24:45 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:28:15 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 23:31:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 23:31:59 | × | haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
| 23:32:46 | → | haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com) |
| 23:32:46 | ChanServ | sets mode +v haskellbridge |
| 23:35:39 | <monochrom> | You know what, I have to understand Reader and Writer first before I understand those two diagrams. |
| 23:35:57 | × | xff0x quits (~xff0x@ai096095.d.east.v6connect.net) (Ping timeout: 252 seconds) |
| 23:36:07 | <monochrom> | And generally I have to understand bind first. |
| 23:37:39 | <monochrom> | But State is missing a diagram and that's a well-known diagram. |
| 23:38:06 | → | xff0x joins (~xff0x@2405:6580:b080:900:704:c9bd:a645:9b1d) |
| 23:38:22 | <monochrom> | Conjecture: Such a diagram exists iff the monad is of an algebraic effect. Cont is not an algebraic effect. |
| 23:42:48 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:42:51 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
| 23:44:14 | → | joeyadams joins (~joeyadams@syn-184-054-105-097.res.spectrum.com) |
| 23:46:35 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 252 seconds) |
| 23:47:34 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 23:49:59 | → | monochrom joins (trebla@216.138.220.146) |
| 23:52:02 | <euouae> | <https://en.wikibooks.org/wiki/Haskell/Understanding_monads/State> "A monad is sometimes described as providing a value in a context." -- this is very close to what I was thinking when I said monads are like state machines |
| 23:54:15 | <dminuoso> | euouae: Monads are an abstract interface. |
| 23:54:36 | <dminuoso> | Comparing them to anything concrete is, at best, just likening it to that specific instance, but that prevents you from seeing what monad is about. |
| 23:54:52 | <int-e> | now I want a burrito |
| 23:55:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:57:25 | <dminuoso> | euouae: My best recommendation is to just not worry about what Monad means at all. `IO` is about side effects. `[]` is about lists. `Maybe` is about failure. `Either A` is about exceptions. Each example is trivial to explain to any beginner |
| 23:58:09 | <dminuoso> | Monad is just observing that all of these things have some pattern and laws in common. There's not really any inherent meaning to it |
| 23:58:40 | <dminuoso> | And if people stop trying to attach meaning to that word `Monad`, they get on learning Haskell much faster. |
| 23:58:45 | <monochrom> | I do not mind specific instances that may limit one's imagination because it is part of the learning process. |
| 23:59:48 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
All times are in UTC on 2025-01-30.