-1

我对 Haskell 很陌生,我唯一的编程知识是 Python。我正在尝试为家庭作业的一部分编写一个程序,该程序将采用整数n并根据n是否为偶数返回 True 或 False。我正在尝试使用 if/then/else 以及内置的 mod 函数,但我似乎无法确定正确的语法。

iseven n = mod n 2
if n == 0 
then n = True
else n = False

如果有人能指出我正确的方向,将不胜感激。

4

2 回答 2

17

If-then-else 具有以下形式:

iseven n = if mod n 2 == 0 then True else False

见:http ://www.haskell.org/haskellwiki/If-then-else

或者干脆放弃 True/False 返回值:

iseven n = mod n 2 == 0

或者更好的是,只需使用Preludeeven中的功能。

于 2013-09-11T01:51:28.940 回答
7

您只需要连接您拥有的两个部分并修复语法问题。

isEven n = if   n `mod` 2 == 0
           then True
           else False

但是你不需要True比较True; 您可以执行以下操作:

isEven n = n `mod` 2 == 0

如果你想变得非常 Haskelly,你可以让它变得无意义:

isEven = (== 0) . (`mod` 2)
于 2013-09-11T01:52:59.997 回答