Newest at the top
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) |
2025-01-31 17:45:05 +0100 | Guest87 | (~Guest92@14.194.140.178) (Quit: Client closed) |
2025-01-31 17:43:14 +0100 | ash3en1 | ash3en |
2025-01-31 17:43:14 +0100 | ash3en | (~Thunderbi@146.70.124.222) (Ping timeout: 272 seconds) |
2025-01-31 17:41:28 +0100 | ash3en1 | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2025-01-31 17:38:14 +0100 | EvanR | (~EvanR@user/evanr) EvanR |
2025-01-31 17:36:52 +0100 | EvanR | (~EvanR@user/evanr) (Quit: Leaving) |
2025-01-31 17:35:41 +0100 | ash3en | (~Thunderbi@146.70.124.222) ash3en |
2025-01-31 17:35:24 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 260 seconds) |
2025-01-31 17:34:03 +0100 | Square | (~Square@user/square) Square |
2025-01-31 17:32:28 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 272 seconds) |
2025-01-31 17:31:46 +0100 | ubert | (~Thunderbi@2a02:8109:ab8a:5a00:a8f9:39f9:ef80:a859) (Ping timeout: 244 seconds) |