Haskell中的绝对值

use*_*056 7 haskell

我正在尝试编写一个返回整数绝对值的函数...

abs :: Int -> Int

abs n | n >= 0    = n
      | otherwise = -n


myabs :: Int -> Int

myabs n = if n >= 0 then n else -n
Run Code Online (Sandbox Code Playgroud)

它们既可以用于正整数,也可以用于负整数.知道为什么吗?

and*_*dri 12

它们似乎都运行得很好:

Main> myabs 1
1
Main> myabs (-1)
1
Main> abs 1
1
Main> abs (-1)
1


use*_*056 6

啊!我不知道你必须在...中加入括号

myabs (-1)
Run Code Online (Sandbox Code Playgroud)

有人通过了傻瓜帽.dohhh

  • 这应该是一个评论(你现在可以这样做).:) (4认同)
  • ^自我参考:D (2认同)

Sim*_*ael 5

是的,您通常需要将负值括在括号中以消除运算符优先级的歧义.有关更多详细信息,请参阅Real World Haskell第1章.