2009-07-30 16 views
6

Próbuję napisać funkcję zwracającą wartość bezwzględną liczbę całkowitą ...wartości bezwzględnych w Haskell

abs :: Int -> Int 

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


myabs :: Int -> Int 

myabs n = if n >= 0 then n else -n 

zarówno praca dla dodatnich liczb całkowitych, lecz nie ujemnych liczb całkowitych one. Każdy pomysł, dlaczego?

Odpowiedz

10

Obaj wydają się działać dobrze:

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

Ahh! Nie wiedziałem, że musisz uwzględnić nawiasy w ...

myabs (-1) 

ktoś minął czapkę dunces. dohhh

+4

To powinien być komentarz (możesz to teraz zrobić). :) –

+2

^Własne odniesienie: D –

4

Zwykle trzeba zignorować wartości ujemne, aby odseparować pierwszeństwo operatora. Aby uzyskać więcej informacji, zobacz Real World Haskell chapter 1.

Powiązane problemy