小编Dav*_*hez的帖子

在 Haskell 中使“A || B && C”无点

我正在 Haskell 中处理一个简单的闰年练习,我想让我的解决方案无点。从此开始:

isLeapYear :: Integer -> Bool
isLeapYear year = divisibleBy 400 year || divisibleBy 4 year && not (divisibleBy 100 year)
  where
    divisibleBy m y = (== 0) $ flip mod m y
Run Code Online (Sandbox Code Playgroud)

我试着使用liftA3,与函数做(x || (y && z))下面这个,但测试没有完成,我不知道为什么。

那么,我有3个问题:

  • 您对我如何实现这一目标有任何指示吗?
  • 在我的第一个解决方案中,是什么阻止divisibleBy了无点?(如果我删除参数,类型检查器会抱怨)
  • 正如我之前提到的,我尝试了类似的东西liftA3 (\x y z -> x || (y && z)) (divisibleBy 400) (divisibleBy 4) (indivisibleBy 100),但测试挂起。为什么会这样?我不明白如何liftA3运作。

非常感谢你的帮助。

haskell pointfree applicative

2
推荐指数
1
解决办法
212
查看次数

标签 统计

applicative ×1

haskell ×1

pointfree ×1