Logs: liberachat/#haskell
| 2025-12-12 14:32:05 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Max SendQ exceeded) |
| 2025-12-12 14:33:29 | × | yin quits (~zero@user/zero) (Killed (NickServ (GHOST command used by Guest900!~yin@a89-153-191-69.cpe.netcabo.pt))) |
| 2025-12-12 14:34:51 | → | ft joins (~ft@p508db844.dip0.t-ipconnect.de) |
| 2025-12-12 14:39:13 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-12-12 14:39:19 | × | Square quits (~Square4@user/square) (Ping timeout: 244 seconds) |
| 2025-12-12 14:42:22 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Max SendQ exceeded) |
| 2025-12-12 14:49:29 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-12-12 14:50:36 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Max SendQ exceeded) |
| 2025-12-12 14:50:43 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 2025-12-12 14:51:23 | → | sldkfjlskdjf joins (~zero@user/zero) |
| 2025-12-12 14:51:29 | × | sldkfjlskdjf quits (~zero@user/zero) (Remote host closed the connection) |
| 2025-12-12 14:51:44 | → | sldkfjlskdjf joins (~zero@user/zero) |
| 2025-12-12 14:54:11 | × | fp quits (~Thunderbi@130.233.70.102) (Quit: fp) |
| 2025-12-12 14:54:32 | → | fp joins (~Thunderbi@2001:708:20:1406::10c5) |
| 2025-12-12 14:55:49 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-12-12 14:57:36 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Max SendQ exceeded) |
| 2025-12-12 14:59:55 | × | trickard quits (~trickard@cpe-83-98-47-163.wireline.com.au) (Ping timeout: 240 seconds) |
| 2025-12-12 15:00:17 | → | trickard_ joins (~trickard@cpe-83-98-47-163.wireline.com.au) |
| 2025-12-12 15:05:00 | × | tromp quits (~textual@2001:1c00:3487:1b00:dd4:56d:fd02:60e2) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2025-12-12 15:05:46 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 2025-12-12 15:06:11 | sldkfjlskdjf | is now known as yin |
| 2025-12-12 15:10:09 | → | tromp joins (~textual@2001:1c00:3487:1b00:dd4:56d:fd02:60e2) |
| 2025-12-12 15:13:45 | → | Wygulmage joins (~Wygulmage@user/Wygulmage) |
| 2025-12-12 15:14:57 | trickard_ | is now known as trickard |
| 2025-12-12 15:21:15 | × | jreicher quits (~user@user/jreicher) (Ping timeout: 240 seconds) |
| 2025-12-12 15:21:54 | × | trickard quits (~trickard@cpe-83-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-12-12 15:22:07 | → | trickard_ joins (~trickard@cpe-83-98-47-163.wireline.com.au) |
| 2025-12-12 15:22:33 | × | Enrico63 quits (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed) |
| 2025-12-12 15:22:40 | → | jreicher joins (~user@user/jreicher) |
| 2025-12-12 15:22:48 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-12-12 15:26:07 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-12-12 15:27:01 | × | trickard_ quits (~trickard@cpe-83-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
| 2025-12-12 15:27:24 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Ping timeout: 260 seconds) |
| 2025-12-12 15:29:06 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-12-12 15:32:46 | → | trickard_ joins (~trickard@cpe-83-98-47-163.wireline.com.au) |
| 2025-12-12 15:34:02 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 2025-12-12 15:37:01 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 15:41:15 | × | skum quits (~skum@user/skum) (Quit: WeeChat 4.8.1) |
| 2025-12-12 15:42:17 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Ping timeout: 250 seconds) |
| 2025-12-12 15:43:50 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-12-12 15:44:25 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-12-12 15:44:43 | × | fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 264 seconds) |
| 2025-12-12 15:50:38 | → | deptype joins (~deptype@2406:b400:3a:9d2f:c928:dba3:487d:1bc) |
| 2025-12-12 15:52:07 | → | Enrico63 joins (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) |
| 2025-12-12 15:54:04 | × | lucabtz quits (~lucabtz@user/lucabtz) (Quit: Lost terminal) |
| 2025-12-12 15:54:47 | × | trickard_ quits (~trickard@cpe-83-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-12-12 15:54:56 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 15:55:00 | → | trickard_ joins (~trickard@cpe-83-98-47-163.wireline.com.au) |
| 2025-12-12 15:59:35 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-12-12 16:00:46 | → | skum joins (~skum@user/skum) |
| 2025-12-12 16:03:36 | → | pebble joins (~pebble@37.63.32.91) |
| 2025-12-12 16:05:21 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 2025-12-12 16:10:43 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 16:15:36 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2025-12-12 16:16:17 | <ski> | Enrico63 : "Well, that's the same as `forall b. (forall a. a -> a) -> b`" -- no |
| 2025-12-12 16:20:47 | <Enrico63> | ski, why? |
| 2025-12-12 16:26:45 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 16:27:23 | × | Enrico63 quits (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed) |
| 2025-12-12 16:30:49 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 250 seconds) |
| 2025-12-12 16:31:35 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-12-12 16:34:26 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 2025-12-12 16:39:33 | ski | blinks |
| 2025-12-12 16:42:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 16:47:21 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-12-12 16:48:09 | → | Enrico63 joins (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) |
| 2025-12-12 16:48:38 | <Enrico63> | ski , blinks? |
| 2025-12-12 16:49:00 | <EvanR> | is (forall a . a -> a) -> b the same as forall b . (forall a . a -> a) -> b |
| 2025-12-12 16:49:06 | <EvanR> | using implicit forall it seems so |
| 2025-12-12 16:50:54 | <kuribas> | Yes, except for scoped type variables. |
| 2025-12-12 16:53:37 | → | __monty__ joins (~toonn@user/toonn) |
| 2025-12-12 16:58:21 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 17:00:12 | trickard_ | is now known as trickard |
| 2025-12-12 17:01:07 | <ski> | Enrico63 : `[a] -> [a]' is not the same as `forall a. [a] -> [a]' |
| 2025-12-12 17:02:25 | <ski> | Enrico63 : if it was, then `Eq a => a -> ([a] -> [a]) -> [a] -> [[a]]' would be the same as `Eq a => a -> (forall a. [a] -> [a]) -> [a] -> [[a]]', which is obviously nonsense |
| 2025-12-12 17:03:16 | <mauke> | similarly, [a] -> Int is not the same as ([a] -> Int) |
| 2025-12-12 17:03:18 | <ski> | Enrico63 : in *most* (but not all) circumstances, `foo :: ..a..' is interpreted as `foo :: forall a. ..a..' |
| 2025-12-12 17:03:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2025-12-12 17:03:33 | <mauke> | if it was, then [a] -> Integer would be the same as ([a] -> Int)eger |
| 2025-12-12 17:03:55 | × | __monty__ quits (~toonn@user/toonn) (Ping timeout: 240 seconds) |
| 2025-12-12 17:05:43 | <ski> | (exceptions being method signatures in `class' (and `instance') declarations, which have the type variables in the head of the declaration free; field/component signatures in record notation for data types; also local signatures (e.g. with `where' or `let'-`in') if you have non local tyvars in scope, using `ScopedTypeVariables') |
| 2025-12-12 17:08:28 | <ski> | so, in `class Eq a where (==) :: a -> a -> Bool', the `(==)' method here is *not* polymorphic, it is monomorphic in the specific `a' being an instance of `Eq' that we're talking about. otoh, in `class Functor f where fmap :: (a -> b) -> f a -> f b', the signature here *is* interpreted as `fmap :: forall a b. (a -> b) -> f a -> f b' (so polymorphic in `a' and `b', but not in `f') |
| 2025-12-12 17:08:47 | <ski> | (so, that's a "polymorphic method" example) |
| 2025-12-12 17:11:24 | <Enrico63> | When I wrote `(forall a. a -> a) -> b` [...] the same as `forall b. (forall a. a -> a) -> b` , I think I was assuming a leading `::`, i.e. that that was the whole signature. Is that what makes the difference? |
| 2025-12-12 17:11:47 | <ski> | if you'd represent type class instances using "dictionaries"/"vtables" (records of methods), then `Eq a' (as above) would be represented as `data EqDict a = MkEqDict {(==) :: a -> a -> Bool}', while for the `Functor' case we'd get `data FunctorDict f = MkFunctorDict {fmap :: forall a b. (a -> b) -> f a -> f b}', where the component/field here is polymorphic, so that the `MkFunctorDict' has a rank-1 type |
| 2025-12-12 17:12:00 | <ski> | Enrico63 : for the most part, yes |
| 2025-12-12 17:12:41 | <ski> | (but there are contexts in which tyvars are not implicitly `forall'-quantified, like when the tyvar is already in scope outside of the signature) |
| 2025-12-12 17:12:48 | × | acidjnk quits (~acidjnk@p200300d6e717190330ae5c7be13b8759.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 2025-12-12 17:14:07 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 17:14:07 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 2025-12-12 17:14:50 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 244 seconds) |
| 2025-12-12 17:18:51 | → | sindu joins (~sindu@2.148.32.207.tmi.telenormobil.no) |
| 2025-12-12 17:19:13 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-12-12 17:22:27 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 17:27:37 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-12-12 17:27:50 | → | __monty__ joins (~toonn@user/toonn) |
| 2025-12-12 17:28:28 | × | Enrico63 quits (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed) |
| 2025-12-12 17:38:07 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-12-12 17:40:37 | → | kuribas joins (~user@2a02:1808:cd:c4e1:9d3f:f177:3913:c0a7) |
| 2025-12-12 17:40:46 | × | AnkurAlpha quits (~ankur@user/AnkurAlpha) (Quit: leaving) |
| 2025-12-12 17:42:37 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
All times are in UTC.