我在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成为图像及其像素上的多参数类型类型,但是您需要函数依赖或类型歧义会使您发疯,并且您仍然需要在使用该类的每个签名中提及像素类型。相关的类型更清洁,更容易。 –