List 如何通过应用于其各自的第一个和第二个值的谓词过滤具有(Int,Int)值的元组列表?

List 如何通过应用于其各自的第一个和第二个值的谓词过滤具有(Int,Int)值的元组列表?,list,haskell,filter,tuples,List,Haskell,Filter,Tuples,假设我有一个元组列表,通过x和y值表示网格上的位置 元组定义为Pos类型,即一对整数值 董事会被进一步定义为一个Pos列表 type Pos = (Int, Int) type Board = [Pos] exampleBoard :: Board exampleBoard = [(1, 1), (1, 2), (2, 2), (2, 3), (1, 3), (5, 1), (5, 2), (4, 2), (4, 1), (5, 3),

假设我有一个元组列表,通过x和y值表示网格上的位置

元组定义为Pos类型,即一对整数值

董事会被进一步定义为一个Pos列表

type Pos = (Int, Int)

type Board = [Pos]

exampleBoard :: Board
exampleBoard = [(1, 1), (1, 2), (2, 2), (2, 3), (1, 3),
                (5, 1), (5, 2), (4, 2), (4, 1), (5, 3),
                (9, 10), (9, 11), (9, 12), (9, 13),
                (10, 10), (10, 11), (10, 12), (10, 13),
                (10, 20), (11, 20), (12, 20), (13, 20)]

板是一个x*x网格,在这里你总是可以考虑已知变量的高度和宽度具有相同的值。高度=宽度=尺寸

如果x或y值不在特定范围内(0要测试元组
(Int,Int)
是否在给定范围内,可以使用
inRange
函数:

import Data.Ix (inRange)

inRange ((1,1),(10,10)) (5,5)                    -- True
inRange ((1,1),(10,10)) (11,6)                   -- False

filter (inRange ((1,1),(10,10))) [(5,5),(11,6)]  -- [(5,5)]

毫不奇怪,您需要一个名为“filter”的函数。