我是Haskell的初学者,因为我的作业,我必须写两个版本的功能:使用和不使用切片。如果参数大于100,则此函数之一应返回True,否则返回False。
没有切片的功能效果很好:
f5 x | x>100 = True
| otherwise = False
但第二个版本没有:
f5' | (>100) = True
| otherwise = False
你能告诉我如何正确编写这个功能吗?
答案 0 :(得分:1)
接受的答案是正确的方法。但是出于争论的缘故,还有另一种方法可以免费提供一个守卫:使用视图模式。
{-# LANGUAGE ViewPatterns #-}
-- Don't ever do this :)
f5 ((> 100) -> True) = True
f5 _ = False
它具有你正在寻找的“抽象”变量的效果。只是我们把守卫变成了这样做的模式。