Haskell:将元组和次要值传递给布尔返回谓词以进行"any" ?



我有一个函数,在其中我传入一个点和一个多边形(请参阅下面的类型定义)。

pointIsOnBorder(见下文)采用一个点和一个多边形,并确定该点是否位于给定多边形的边界之一上。

type Point = (Double, Double)
type Polygon = [Point]
pointIsOnBorder :: Point -> Polygon -> Bool
pointIsOnBorder a ps = if (any onLineSegment(a) (breakPolygonToLines ps)) then True else False

在上面的示例中,breakPolygonToLines正确地获取点(又名多边形)列表并返回点元组列表。例如:对于输入 [(2,3), (4,3), (5, 6)]breakPolygonToLines 返回 [((2.0,3.0),(4.0,3.0)),((4.0,3.0),(5.0,6.0)),((5.0,6.0),(2.0,3.0))]

从上面的代码片段中,onLineSegment获取一个点和一个点元组,并确定该点是否存在于给定的点元组(也称为线段)上。

onLineSegment :: Point -> (Point, Point) -> Bool

但是,我将每个点元组传递到onLineSegment时遇到错误。语法any onLineSegment(a) (breakPolygonToLines ps)有效吗?

编辑:添加了更多细节;请参阅上文。

不知道你的函数到底在做什么,很难回答。看来any (onLineSegment a) (breakPolygonToLines ps)就是你要找的。 (onLineSegment a)修复函数的第一个参数,并给出一个从元组到布尔值的函数。

相关维基页面:http://www.haskell.org/haskellwiki/Partial_application

最新更新