Logs: liberachat/#haskell
| 2026-03-08 20:18:05 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-08 20:18:32 | <geekosaur> | also I feel like this (fundeps conflict) came up somewhere else(?) recently and there turned out to be a gotcha somewhere that this was blocking |
| 2026-03-08 20:20:24 | <geekosaur> | no, this isn't what I was remembering, modulo additional LANGUAGE pragmas needed it's the same error on 8.10.7 |
| 2026-03-08 20:21:28 | → | madresch1 joins (~Thunderbi@user/madresch) |
| 2026-03-08 20:22:10 | × | madresch quits (~Thunderbi@user/madresch) (Ping timeout: 248 seconds) |
| 2026-03-08 20:22:11 | madresch1 | is now known as madresch |
| 2026-03-08 20:24:15 | × | j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 2026-03-08 20:25:33 | → | madresch1 joins (~Thunderbi@user/madresch) |
| 2026-03-08 20:26:05 | <mauke> | Add x (S y) (S y) |
| 2026-03-08 20:26:20 | <mauke> | first instance says x = Z, second instance says x = S a |
| 2026-03-08 20:26:48 | × | madresch quits (~Thunderbi@user/madresch) (Quit: madresch) |
| 2026-03-08 20:26:57 | → | j1n37 joins (~j1n37@user/j1n37) |
| 2026-03-08 20:29:05 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 20:29:17 | → | madresch joins (~Thunderbi@user/madresch) |
| 2026-03-08 20:29:18 | <haskellbridge> | <ijouw> The second one has a condition that is not true when x = Z |
| 2026-03-08 20:29:20 | → | YuutaW joins (~YuutaW@infornography.yta.moe) |
| 2026-03-08 20:29:33 | <mauke> | there are no conditions |
| 2026-03-08 20:29:59 | <mauke> | 'Add a b c =>' is a function body, not a guard |
| 2026-03-08 20:30:31 | × | madresch1 quits (~Thunderbi@user/madresch) (Ping timeout: 268 seconds) |
| 2026-03-08 20:30:40 | <mauke> | that is, we first select an instance by matching against 'Add Z b b' and 'Add (S a) b (S c)', and only then we try to satisfy the preconditions |
| 2026-03-08 20:31:18 | → | AlexNoo joins (~AlexNoo@178.34.160.184) |
| 2026-03-08 20:31:31 | <mauke> | or at least that's how I remember instance resolution works |
| 2026-03-08 20:31:56 | <mauke> | (in function terms: add Z b b = (); add (S a) b (S c) = add a b c) |
| 2026-03-08 20:32:03 | → | AlexNoo_ joins (~AlexNoo@178.34.160.184) |
| 2026-03-08 20:32:46 | → | AlexNoo__ joins (~AlexNoo@178.34.160.184) |
| 2026-03-08 20:33:47 | <geekosaur> | that's correct, only the instance head is considered to match instances |
| 2026-03-08 20:34:05 | <geekosaur> | constraints are applied at use sites after an instance is selected |
| 2026-03-08 20:34:13 | × | madresch quits (~Thunderbi@user/madresch) (Ping timeout: 268 seconds) |
| 2026-03-08 20:34:24 | <geekosaur> | (so we're back to what I thought was going on initially, only via a different route) |
| 2026-03-08 20:35:27 | × | AlexNoo quits (~AlexNoo@178.34.160.184) (Ping timeout: 246 seconds) |
| 2026-03-08 20:36:04 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2026-03-08 20:36:20 | <haskellbridge> | <ijouw> Sadly I do not know how addition can be implemented without this issue arising. |
| 2026-03-08 20:36:30 | × | AlexNoo_ quits (~AlexNoo@178.34.160.184) (Ping timeout: 246 seconds) |
| 2026-03-08 20:36:51 | × | AlexNoo__ quits (~AlexNoo@178.34.160.184) (Ping timeout: 246 seconds) |
| 2026-03-08 20:39:14 | → | madresch joins (~Thunderbi@user/madresch) |
| 2026-03-08 20:39:28 | × | madresch quits (~Thunderbi@user/madresch) (Client Quit) |
| 2026-03-08 20:47:30 | → | merijn joins (~merijn@62.45.136.136) |
| 2026-03-08 20:51:58 | × | merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds) |
| 2026-03-08 20:53:46 | → | p3n joins (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) |
| 2026-03-08 20:54:09 | × | j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 2026-03-08 20:55:34 | → | j1n37 joins (~j1n37@user/j1n37) |
| 2026-03-08 20:56:48 | → | machinedgod joins (~machinedg@d172-219-48-230.abhsia.telus.net) |
| 2026-03-08 21:01:48 | → | pavonia joins (~user@user/siracusa) |
| 2026-03-08 21:02:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 21:08:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-03-08 21:11:08 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2026-03-08 21:13:05 | × | j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 245 seconds) |
| 2026-03-08 21:16:05 | Digitteknohippie | is now known as Digit |
| 2026-03-08 21:18:24 | × | takuan quits (~takuan@d8d86b9e9.access.telenet.be) (Ping timeout: 264 seconds) |
| 2026-03-08 21:18:43 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 21:23:39 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-08 21:24:37 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 2026-03-08 21:24:50 | → | stackdroid18 joins (~stackdroi@user/stackdroid) |
| 2026-03-08 21:34:31 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 21:36:50 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds) |
| 2026-03-08 21:38:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-03-08 21:38:56 | <EvanR> | does overlapping instances let you break those rules, with how instances are selected |
| 2026-03-08 21:45:08 | → | m_a_r_k joins (~m_a_r_k@archlinux/support/mark) |
| 2026-03-08 21:45:17 | <haskellbridge> | <ijouw> Since the error is arising due to the functional dependency rule, it does not occur at call site but at the definition. So i doubt overlapping instances does anything. |
| 2026-03-08 21:46:17 | <haskellbridge> | <ijouw> (also tried incoherent instances, same results) |
| 2026-03-08 21:49:54 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 21:55:03 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 2026-03-08 22:00:43 | <EvanR> | do functional dependencies do anything before instant selection or is it just a consistency check after the fact that bad instances don't get accepted |
| 2026-03-08 22:06:04 | → | merijn joins (~merijn@62.45.136.136) |
| 2026-03-08 22:06:32 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: jsdvnsn) |
| 2026-03-08 22:12:34 | × | merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds) |
| 2026-03-08 22:12:38 | <haskellbridge> | <ijouw> Is the question about the usage of FD or implementation details? |
| 2026-03-08 22:13:21 | → | karenw_ joins (~karenw@user/karenw) |
| 2026-03-08 22:14:32 | <EvanR> | mathematically |
| 2026-03-08 22:16:21 | × | xff0x quits (~xff0x@2405:6580:b080:900:c57f:2e5b:eec:a8fa) (Ping timeout: 268 seconds) |
| 2026-03-08 22:17:09 | → | xff0x joins (~xff0x@2405:6580:b080:900:3d38:9b05:9987:e9b1) |
| 2026-03-08 22:19:04 | <geekosaur> | they affect type resolution, by adding a constraint on types. (it's more or less a Prolog assertion wedged into Haskell) |
| 2026-03-08 22:21:46 | <geekosaur> | not sure there's much of a "mathematical" aspect to them, it's just avoiding you needing to annotate use sites to choose an instance, by telling type inference that if it knows the type on the left of the arrow, that determines the type on the right. either this or associated types are needed to make multiparameter type classes typecheck without explicit annotations |
| 2026-03-08 22:30:07 | <EvanR> | well it narrows down the possible instances of a MPTC, which when unrestricted form a general relation between types |
| 2026-03-08 22:30:16 | <EvanR> | possibly non-functional |
| 2026-03-08 22:30:45 | <EvanR> | I figured there was something else going on more practical but it still nebulous to me |
| 2026-03-08 22:59:55 | <monochrom> | Functional dependencies are type-checking-time only. |
| 2026-03-08 23:00:44 | <davean> | They just add a constrait to solve for to the type checker |
| 2026-03-08 23:03:55 | × | picnoir quits (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Ping timeout: 245 seconds) |
| 2026-03-08 23:06:18 | × | Square quits (~Square@user/square) (Ping timeout: 244 seconds) |
| 2026-03-08 23:06:23 | → | Square2 joins (~Square4@user/square) |
| 2026-03-08 23:17:20 | → | picnoir joins (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) |
| 2026-03-08 23:36:51 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 23:41:42 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-03-08 23:52:17 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-08 23:56:42 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-03-08 23:57:06 | ← | stackdroid18 parts (~stackdroi@user/stackdroid) () |
| 2026-03-09 00:01:25 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 268 seconds) |
| 2026-03-09 00:07:58 | → | arandombit joins (~arandombi@user/arandombit) |
| 2026-03-09 00:08:03 | → | merijn joins (~merijn@62.45.136.136) |
| 2026-03-09 00:10:37 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 2026-03-09 00:12:26 | × | merijn quits (~merijn@62.45.136.136) (Ping timeout: 244 seconds) |
| 2026-03-09 00:14:12 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2026-03-09 00:14:30 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds) |
| 2026-03-09 00:23:29 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 2026-03-09 00:28:02 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-03-09 00:29:33 | × | Tuplanolla quits (~Tuplanoll@88.114.89.88) (Quit: Leaving.) |
| 2026-03-09 00:30:16 | → | arandombit joins (~arandombi@2a02:2455:8656:7100:49f2:4a42:13a7:5052) |
| 2026-03-09 00:30:16 | × | arandombit quits (~arandombi@2a02:2455:8656:7100:49f2:4a42:13a7:5052) (Changing host) |
| 2026-03-09 00:30:16 | → | arandombit joins (~arandombi@user/arandombit) |
All times are in UTC.