У меня есть функция со следующей подписью типа
{-# LANGUAGE FlexibleContexts #-}
dataLat :: Load r DIM1 Double
=> (Array r DIM1 Double -> Array U DIM1 Double, Array U DIM1 Double)
Array
, U
и DIM1
взяты из библиотеки Repa. dataLat
создает данные, которые позже передаются другим функциям в виде кортежа. В какой-то момент переменная типа r
унифицируется с типом D
(это опять же от Repa), но позже r
также должна унифицироваться с типом L
(это мой тип). Проблема в том, что он уже унифицирован с D
и поэтому не может быть унифицирован с L
. Я получаю ошибку Couldn't match expected type
. Я думаю, что это должно быть решено с помощью какой-либо формы типов более высокого ранга, но я не могу понять, как это должно быть написано. Может ли кто-нибудь дать мне руку?