我有一個函數具有以下類型簽名來自Repa庫如何允許一個類型變量與不同類型的統一?
{-# LANGUAGE FlexibleContexts #-}
dataLat :: Load r DIM1 Double
=> (Array r DIM1 Double -> Array U DIM1 Double, Array U DIM1 Double)
Array
,U
和DIM1
。 dataLat
創建稍後作爲元組傳遞給其他函數的數據。在一個點r
類型變量與D
(這是再次來自Repa)類型變量統一,但在稍後的點r
也應與L
(這是我的類型)統一。問題在於它已與D
統一,因此不能與L
統一。我結束了Couldn't match expected type
錯誤。我認爲這應該通過某種形式的更高級別的類型來解決,但我無法弄清楚這應該如何寫。任何人都可以幫我一把嗎?
賓果!它在某種程度上讓我想起了這可能是由單態引起的 - 我不知道爲什麼我沒有檢查它。 –