使用警卫和切片

时间:2018-03-02 22:34:04

标签: haskell

我是Haskell的初学者,因为我的作业,我必须写两个版本的功能:使用和不使用切片。如果参数大于100,则此函数之一应返回True,否则返回False。

没有切片的功能效果很好:

f5 x | x>100 = True
     | otherwise = False

但第二个版本没有:

f5' | (>100) = True
    | otherwise = False

你能告诉我如何正确编写这个功能吗?

1 个答案:

答案 0 :(得分:1)

接受的答案是正确的方法。但是出于争论的缘故,还有另一种方法可以免费提供一个守卫:使用视图模式。

{-# LANGUAGE ViewPatterns #-}

-- Don't ever do this :)
f5 ((> 100) -> True) =  True
f5 _                 = False

它具有你正在寻找的“抽象”变量的效果。只是我们把守卫变成了这样做的模式。

相关问题