Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何解决F中的错误类型返回#_F# - Fatal编程技术网

F# 如何解决F中的错误类型返回#

F# 如何解决F中的错误类型返回#,f#,F#,我有一个以以下内容开头的函数: 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 -

我有一个以以下内容开头的函数:

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)` 
getcolorlist
正在图片坐标中获取RGB byteList。它的签名是

image:Image -> x:int * y:int -> byte list
我们知道image也是一种类型,我的问题是getcolorlist(image(coord))的返回类型是
int*int->byte list
,这是一个不正确的表达式。有人能帮忙吗


感谢您的回答

如果我理解您的问题,我想您要问的是如何定义CreateUnit返回的函数。这在一定程度上取决于如何从图像和坐标生成块。假设它是image的一个成员函数:

let CreateUnit image : (Coordinate->Block) =
    fun (coordinate:Coordinate) -> image.makeBlock(coordinate)
这将为您提供一个绑定到图像的函数,该函数获取坐标并生成块:

let myImage = loadImage(filename)
let blockMaker = CreateUnit image

myCoordinates
|> Seq.map blockMaker

将坐标序列转换为从图像派生的块序列。

我不太理解这个问题,但您的函数签名告诉我们:“CreateUnit是一个函数,它接受图像作为输入,并返回另一个函数,该函数接受坐标作为输入,并返回块”。所以稍后你可以做一些类似于
let block=CreateUnit image coordination
的事情,是的,那么如何创建这个函数是我的问题,我要做类似
let Unit(??param):(block)
?我不知道应该输入什么样的内容。如何将另一个函数作为输出返回将
getColorList(image(coord))
更改为
getColorList image coord
时会发生什么?您编写的表达式试图将图像视为函数。我冒昧地改进了代码的格式。如果你有代码块,你不需要在它们周围加上反勾号;只需将它们缩进四个字符,它们就会正确显示格式。堆栈溢出编辑器框中有一个类似于
{}
的方便按钮,可以为您执行此操作,因此您只需粘贴代码,高亮显示它,单击
{}
按钮,即可完成此操作。(查看编辑框下方的预览,看看是否正确)。最终解决了,感谢Robert Sim在此处的评论,问题只是括号。。。