我在unm-hip包中找到了這段代碼。 So Pixel是一個功能?星星在這個haskell代碼中意味着什麼?
class Imageable i where
type Pixel i :: *
rows :: i -> Int
cols :: i -> Int
ref :: i -> Int -> Int -> (Pixel i)
makeImage :: Int -> Int -> PixelOp (Pixel i) -> i
pixelList :: i -> [Pixel i]
pixelList i = [ ref i r c | r <- [0..(rows i - 1)], c <- [0..(cols i - 1)]]
你知道爲什麼代碼作者使用這種設計嗎? – osager
沒有太多的選擇。你有某種代表圖像的類型,而typeclass需要處理圖像中單個像素的函數。你需要一些方法來找出那個像素的類型。你可以修復它,但這不是很靈活。您可以使Imageable成爲圖像及其像素上的多參數類型類型,但是您需要函數依賴或類型歧義會使您發瘋,並且您仍然需要在使用該類的每個簽名中提及像素類型。相關的類型更清潔,更容易。 –