Надеюсь, я правильно понял терминологию.
Я хочу сделать следующее:
data Hide a = ∀ b. (A.ToJSON (a b), A.ToJSON b) ⇒ Hide (a b)
mapHide ∷ (∀ c. (A.ToJSON (b c), A.ToJSON c) ⇒ a c → b c) → Hide a → Hide b
mapHide f (Hide a) = (Hide $ f a)
К сожалению, GHC, по-видимому, не может правильно определить ограничения и жалуется:
Could not deduce (A.ToJSON (b b1)) arising from a use of ‘Hide’
from the context (A.ToJSON (a b1), A.ToJSON b1)
Это как-то возможно?
f
требуется ограничение(ToJSON (b b1))
, которое не обеспечивается сопоставлением с образцом в(Hide a)
. Контекст в сообщении об ошибке дает фактически предоставленные ограничения. Не могли бы вы дать более подробную информацию о том, что вы пытаетесь сделать? - person Li-yao Xia   schedule 08.03.2017A.ToJSON (a b)
, спасибо! - person Philip Kamenarsky   schedule 08.03.2017