2009-07-30 17 views
6

Sto cercando di scrivere una funzione che restituisce il valore assoluto di un numero intero ...valori assoluti in Haskell

abs :: Int -> Int 

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


myabs :: Int -> Int 

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

Entrambi lavorano per interi positivi ma interi non negativi. Qualche idea sul perché?

risposta

10

Entrambi sembrano funzionare bene:

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

Ahh! Non sapevo che dovevi includere parentesi in ...

myabs (-1) 

qualcuno passa il cappello delle donne. dohhh

+4

Questo dovrebbe essere un commento (è possibile farlo ora). :) –

+2

^autoreferenziale: D –

4

Giusto, di solito è necessario mettere in parentesi i valori negativi per disambiguare la precedenza degli operatori. Per ulteriori dettagli, vedere Real World Haskell chapter 1.

Problemi correlati