假设我有一个包含各种对象坐标的类型,定义如下:
type Point = (Int, Int)
data Object = A Point
| B Point
| C Point
Run Code Online (Sandbox Code Playgroud)
我想创建一个检查对象重叠的函数,就像这样
checkOverlap:: Object -> Point -> Bool
Run Code Online (Sandbox Code Playgroud)
我想只定义一个适用于所有对象的函数,而不必指定"checkOverlap(A point)(x,y)","checkOverlap(B point)(x,y)"等等.
我已经搜索了问题,但我能找到的唯一解决方案是添加一个中间类型,它将收集所有不同的对象,以便您可以在该类型上进行模式匹配.但是,由于这是一项家庭作业,我不允许修改大块代码以适应这种新类型.
还有其他方法吗?也许甚至没有模式匹配.似乎不好的编程必须多次复制相同的功能.