Я пытаюсь выяснить, есть ли простой способ получить тип записи newtype для добавления в сигнатуры функций.
newtype T1 = T1 { foo:: Int}
derive instance newtypeT1 :: Newtype T1 _
... other classes that require me to newtype the record ...
Я знаю, что могу получить доступ к записям участников с
_.property
и я могу написать это с помощью unwrap
unwrap >>> _.property
чтобы получить функцию для этого свойства, но я бы хотел написать функцию, аналогичную
testFoo :: forall a. (_ -> a) -> Effect a
testFoo accessor = (unwrap >>> accessor) <$> loadT1
Это работает, но подстановочный знак выдает предупреждение, но я не уверен, как получить это определение записи из T1. (Это минимальный пример, у меня есть массивный объект свойства из внешнего источника.
Обходной путь, который я использовал сейчас, состоял в том, чтобы объявить мой тип как
type InnerT1 = { foo ::Int}
newtype T1 = T1 InnerT1
и экспорт этого InnerT1, чтобы его можно было использовать в моем тестовом файле, но это кажется немного неуклюжим, и мне интересно, есть ли лучший способ?