Newest at the top
2025-01-31 18:58:49 +0100 | tabaqui1 | (~root@87.200.129.102) (Ping timeout: 260 seconds) |
2025-01-31 18:58:37 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-01-31 18:58:06 +0100 | vektor | (~vektor@IP-149249154134.pools.medianet-world.de) (Quit: Client closed) |
2025-01-31 18:57:28 +0100 | ash3en1 | (~Thunderbi@146.70.124.222) ash3en |
2025-01-31 18:57:21 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 276 seconds) |
2025-01-31 18:56:30 +0100 | jespada | (~jespada@2800:a4:2215:4d00:20a9:6cd:d7c4:a65f) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-01-31 18:54:37 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2025-01-31 18:52:20 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-01-31 18:51:12 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2025-01-31 18:51:12 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2025-01-31 18:48:21 +0100 | target_i | (~target_i@user/target-i/x-6023099) target_i |
2025-01-31 18:39:09 +0100 | ensyde | (~ensyde@2601:5c6:c200:6dc0::64a2) (Ping timeout: 260 seconds) |
2025-01-31 18:34:31 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-01-31 18:34:08 +0100 | urdh | (~urdh@user/urdh) (Ping timeout: 245 seconds) |
2025-01-31 18:33:47 +0100 | acidjnk_new3 | (~acidjnk@p200300d6e7283f83f8f1a3a9ad07643b.dip0.t-ipconnect.de) acidjnk |
2025-01-31 18:33:30 +0100 | <EvanR> | s/Blah/Foo, s/Foo/Blah, Blarg! |
2025-01-31 18:28:54 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2025-01-31 18:23:09 +0100 | <ski> | c_wraith : hm, subsumption worked something like the above ? |
2025-01-31 18:23:08 +0100 | <ski> | ) |
2025-01-31 18:22:42 +0100 | <ski> | (if you'd use an explicit type signature, you'd still need to include the constraint `Foo x y' in `frob :: Foo x y => Blah x y -> Blah x y' |
2025-01-31 18:22:23 +0100 | <ski> | er, s/Blah x y =>/Foo x y =>/ |
2025-01-31 18:21:17 +0100 | <ski> | ' |
2025-01-31 18:21:12 +0100 | <ski> | therefore `Blah x y -> Blah x y' means `(x -> (x y,y)) -> (x -> (x y,y))' with `Foo x y' as presupposition, so if that's the inferred type of a function binding, it'd get (assuming no further constraints on `x' and `y' generalized to `forall x y. Blah x y => (x -> (x y,y)) -> (x -> (x y,y)) |
2025-01-31 18:19:04 +0100 | <ski> | type Foo x y => Blah x y = x -> (x y,y) -- if `Foo x y' holds, then `Blah x y' is an alias for `(x y,y)' |
2025-01-31 18:18:12 +0100 | <ski> | .. it seems like it would perhaps be useful to be able to declare a constraint as a presupposition of a synonym |
2025-01-31 18:17:54 +0100 | <ski> | (iow, `type Blah x y = Foo x y => x -> (x y,y)' .. still, it's not too clear how useful this would be) |
2025-01-31 18:17:51 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
2025-01-31 18:15:14 +0100 | <ski> | "you're (intentionally or not) defining an existential" -- unless you parameterize |
2025-01-31 18:14:54 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds) |
2025-01-31 18:14:33 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2025-01-31 18:13:48 +0100 | ubert | (~Thunderbi@p200300ecdf4e6362e6fd4bc8009ee988.dip0.t-ipconnect.de) ubert |
2025-01-31 18:13:29 +0100 | alfiee | (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
2025-01-31 18:12:48 +0100 | ubert | (~Thunderbi@p200300ecdf4e6362e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2025-01-31 18:11:21 +0100 | <lxsameer> | thank you |
2025-01-31 18:09:12 +0100 | alfiee | (~alfiee@user/alfiee) alfiee |
2025-01-31 18:08:51 +0100 | <c_wraith> | I still can't believe that was GHC's default behavior for forever. |
2025-01-31 18:08:12 +0100 | <c_wraith> | unless you have deep subsumption enabled, in which case it implicitly lifts the constraint to the top of the type |
2025-01-31 18:06:48 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2025-01-31 18:06:18 +0100 | ubert | (~Thunderbi@p200300ecdf4e6362e6b318fffe838f33.dip0.t-ipconnect.de) ubert |
2025-01-31 18:02:55 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-01-31 18:02:11 +0100 | <lxsameer> | thank you |
2025-01-31 18:02:09 +0100 | <lxsameer> | merijn: ok i have to read more about it then |
2025-01-31 18:01:17 +0100 | <merijn> | rankn type, I meant |
2025-01-31 18:01:09 +0100 | <merijn> | eh, not existential |
2025-01-31 18:01:00 +0100 | <merijn> | lxsameer: Because otherwise you're (intentionally or not) defining an existential |
2025-01-31 18:00:23 +0100 | <merijn> | lxsameer: Generally you'd keep the constraint out of the alias |
2025-01-31 17:58:16 +0100 | <lxsameer> | hey folks, how can I define a type alias for `(Foo x y) => x -> (x y, y)` type? |
2025-01-31 17:57:36 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2025-01-31 17:48:29 +0100 | alp | (~alp@2001:861:8ca0:4940:291:464f:2c61:f1c2) |
2025-01-31 17:46:19 +0100 | sp1ff | (~user@c-67-160-173-55.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |