{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:55:07Z","timestamp":1776891307536,"version":"3.51.2"},"reference-count":0,"publisher":"Centre pour la Communication Scientifique Directe (CCSD)","issue":"2","license":[{"start":{"date-parts":[[2002,3,22]],"date-time":"2002-03-22T00:00:00Z","timestamp":1016755200000},"content-version":"unspecified","delay-in-days":21,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2002,3]]},"abstract":"<jats:p>\n                    Type classes are a novel combination of parametric polymorphism and constrained types. \nAlthough most implementations restrict type classes to be single-parameter, the generalization \nto multi-parameter type classes has gained increasing attention. A problem with multi-parameter \ntype classes is the increased possibilities they introduce for ambiguity in inferred \ntypes, impacting their usefulness in many practical situations. A new type-checking strategy,\n                    <jats:italic>domain-driven unifying resolution<\/jats:italic>\n                    , is identified as an approach to solve these problems. Domain-driven \nunifying resolution is simple, efficient, and practically useful. However, even with severe \nrestrictions on instance definitions, it is not possible to guarantee that type-checking with \nunifying resolution terminates. This is in contrast with the naive generalization of single \nparameter resolution strategies. Domain-driven unifying resolution is guaranteed to terminate \nif the type class constraints are satisfiable; however satisfiability is undecidable even with severe \nrestrictions on instance definitions. These results shed some light on ambiguity problems with \nmulti-parameter type classes.\n                  <\/jats:p>","DOI":"10.1017\/s0956796801004233","type":"journal-article","created":{"date-parts":[[2008,8,8]],"date-time":"2008-08-08T10:02:50Z","timestamp":1218189770000},"page":"133-158","source":"Crossref","is-referenced-by-count":11,"title":["Type-checking multi-parameter type classes"],"prefix":"10.46298","volume":"12","author":[{"given":"DOMINIC","family":"DUGGAN","sequence":"first","affiliation":[]},{"given":"JOHN","family":"OPHEL","sequence":"additional","affiliation":[]}],"member":"25203","published-online":{"date-parts":[[2002,3,22]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796801004233","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,22]],"date-time":"2026-04-22T20:18:40Z","timestamp":1776889120000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796801004233\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2002,3]]},"references-count":0,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2002,1]]}},"alternative-id":["S0956796801004233"],"URL":"https:\/\/doi.org\/10.1017\/s0956796801004233","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2002,3]]}}}