Доброго времени суток.
Нужно сгенерировать класс вида:
data Port_name = Port_name
class WithPort_name where
name :: d -> PortInstance d Port_name
name = \d -> PortInstance d Port_name
DataD [] typeName [] [NormalC typeName []] []...
В случае если использовать нотацию [d| |], то он не хочет подставлять из окружения значения переменных, или я не знаю, как его об этом правильно попросить.