我可以通过这个 haskell 练习得到一些想法吗?
Can I get some idea with this haskell exercise?
我得到了这个练习,但我不知道如何开始和解决它。
一个轴上的点
- 判断坐标表示的点是否在坐标系中的某个轴上!
- 使用模式匹配!不要使用等式测试或分支。
- 还要指定函数类型!
- 以下每个测试用例都必须给出 True:
onAxis (0, 0)
onAxis (0, 100)
onAxis (50, 0)
onAxis (-12, 0)
not (onAxis (4, 5))
Haskell 的模式匹配是一个强大而有用的特性。例如,您的函数可以有多个公式,Haskell 将选择其中一个,例如,参数模式匹配:
isZero :: Int -> Bool
isZero 0 = True
isZero _ = False
这个简单的小函数应该只是告诉我我的参数是否等于零。我这样做没有任何比较,只是通过模式匹配。 0
匹配.. 好吧,字面意思是 0
。但是 _
匹配 一切 。这里的顺序很重要,选择第一个匹配的公式。
那么你的积分呢?它们表示为元组:(x, y)
。我们可以通过模式匹配“查看”值:
isZeroPoint :: (Int, Int) -> Bool
isZeroPoint (0, 0) = True
isZeroPoint _ = False
好的,那么我们如何知道(二维)点是在 X 轴还是 Y 轴上?看看给出的例子,现在应该很明显了!
有了这个,你的练习题应该就能解决了!
如果您这样做了或仍有疑问,请反馈 ;)
PS:我没有详细说明完整的解决方案,因为我认为如果我为您做作业对您没有帮助。
PPS:为了简单起见,我只是选择了具体类型 Int
,因为我不知道关于 Haskell 类型你还学过什么。可以使用不同的数字类型(例如 Integer
)或更通用的类型。
我得到了这个练习,但我不知道如何开始和解决它。
一个轴上的点
- 判断坐标表示的点是否在坐标系中的某个轴上!
- 使用模式匹配!不要使用等式测试或分支。
- 还要指定函数类型!
- 以下每个测试用例都必须给出 True:
onAxis (0, 0)
onAxis (0, 100)
onAxis (50, 0)
onAxis (-12, 0)
not (onAxis (4, 5))
Haskell 的模式匹配是一个强大而有用的特性。例如,您的函数可以有多个公式,Haskell 将选择其中一个,例如,参数模式匹配:
isZero :: Int -> Bool
isZero 0 = True
isZero _ = False
这个简单的小函数应该只是告诉我我的参数是否等于零。我这样做没有任何比较,只是通过模式匹配。 0
匹配.. 好吧,字面意思是 0
。但是 _
匹配 一切 。这里的顺序很重要,选择第一个匹配的公式。
那么你的积分呢?它们表示为元组:(x, y)
。我们可以通过模式匹配“查看”值:
isZeroPoint :: (Int, Int) -> Bool
isZeroPoint (0, 0) = True
isZeroPoint _ = False
好的,那么我们如何知道(二维)点是在 X 轴还是 Y 轴上?看看给出的例子,现在应该很明显了!
有了这个,你的练习题应该就能解决了! 如果您这样做了或仍有疑问,请反馈 ;)
PS:我没有详细说明完整的解决方案,因为我认为如果我为您做作业对您没有帮助。
PPS:为了简单起见,我只是选择了具体类型 Int
,因为我不知道关于 Haskell 类型你还学过什么。可以使用不同的数字类型(例如 Integer
)或更通用的类型。