2025/01/31

Newest at the top

2025-01-31 18:39:09 +0100ensyde(~ensyde@2601:5c6:c200:6dc0::64a2) (Ping timeout: 260 seconds)
2025-01-31 18:34:31 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-01-31 18:34:08 +0100urdh(~urdh@user/urdh) (Ping timeout: 245 seconds)
2025-01-31 18:33:47 +0100acidjnk_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 +0100machinedgod(~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 +0100ljdarj(~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 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
2025-01-31 18:14:33 +0100chele(~chele@user/chele) (Remote host closed the connection)
2025-01-31 18:13:48 +0100ubert(~Thunderbi@p200300ecdf4e6362e6fd4bc8009ee988.dip0.t-ipconnect.de) ubert
2025-01-31 18:13:29 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 260 seconds)
2025-01-31 18:12:48 +0100ubert(~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 +0100alfiee(~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 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-01-31 18:06:18 +0100ubert(~Thunderbi@p200300ecdf4e6362e6b318fffe838f33.dip0.t-ipconnect.de) ubert
2025-01-31 18:02:55 +0100peterbecich(~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 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-01-31 17:48:29 +0100alp(~alp@2001:861:8ca0:4940:291:464f:2c61:f1c2)
2025-01-31 17:46:19 +0100sp1ff(~user@c-67-160-173-55.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2025-01-31 17:45:05 +0100Guest87(~Guest92@14.194.140.178) (Quit: Client closed)
2025-01-31 17:43:14 +0100ash3en1ash3en
2025-01-31 17:43:14 +0100ash3en(~Thunderbi@146.70.124.222) (Ping timeout: 272 seconds)
2025-01-31 17:41:28 +0100ash3en1(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2025-01-31 17:38:14 +0100EvanR(~EvanR@user/evanr) EvanR
2025-01-31 17:36:52 +0100EvanR(~EvanR@user/evanr) (Quit: Leaving)
2025-01-31 17:35:41 +0100ash3en(~Thunderbi@146.70.124.222) ash3en
2025-01-31 17:35:24 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 260 seconds)
2025-01-31 17:34:03 +0100Square(~Square@user/square) Square
2025-01-31 17:32:28 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 272 seconds)
2025-01-31 17:31:46 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:a8f9:39f9:ef80:a859) (Ping timeout: 244 seconds)