Im пытается понять дизайн библиотеки Haskell's Data.Collection
, исходящей от фона Scala-Literate.Роль функциональной зависимости в стиле «Unfoldable» класса Haskell Collection API
Он использует Functional Dependencies (у которых есть Scala analog), но способ, которым они используются, для меня не имеет смысла. В классе , воспроизведенном ниже, тип элемента i
показан как , определяемый типами сбора c
.
class Unfoldable c i | c -> i
Класс коллекции с ненаблюдаемых элементов. Он является двойным классом
Foldable
.
Пожалуйста, объясните роль, которую играет здесь и намерение дизайна, в идеале, с примером использования?