我有一个以:
开头的函数type Coordinate = (int * int)
type ColourList = byte list
type Block = Coordinate * ColourList
makeBlock(image:image) (coord:Coordinate) : Block =
Block(coord,getColourList(image(coord))`
CreateUnit (image:Image) : (Coordinate -> Block) =
fun coord -> makeBlock(image, coord)`
getColourList
在图片的坐标中获取RGB byteList。它的签名是
image:Image -> x:int * y:int -> byte list
我们知道图像也是一种类型,我的问题是getColourList(image(coord))的返回类型是int * int -> byte list
这是一个不正确的表达式。任何人都可以帮忙吗?
感谢您的回答
答案 0 :(得分:2)
如果我理解你的问题,我想你要问的是如何定义CreateUnit返回的函数。这取决于你如何从图像和坐标制作块。假设它是图像的成员函数:
let CreateUnit image : (Coordinate->Block) =
fun (coordinate:Coordinate) -> image.makeBlock(coordinate)
这将为您提供一个绑定到坐标并生成块的图像的函数:
let myImage = loadImage(filename)
let blockMaker = CreateUnit image
myCoordinates
|> Seq.map blockMaker
将坐标序列转换为从图像派生的块序列。