2010-12-05 12 views
63

Intab)の2つを取得し、A/BIntと返す関数が必要です。 A/Bは常に整数であると確信しています。IntをIntに分割してIntを返します

は、ここに私のソリューションです:

myDiv :: Int -> Int -> Int 
myDiv a b = 
     let x = fromIntegral a 
      y = fromIntegral b 
     in truncate (x/y) 

しかし、もっと簡単な解決策を見つけたいです。このようなもの:

myDiv :: Int -> Int -> Int 
myDiv a b = a/b 

IntをIntに分割してIntを取得するにはどうすればよいですか?

答えて

112

quotを使用しないのはなぜですか?

quot a b 

は、ゼロに切り捨てられた整数aとbの整数商です。

+6

または中置愛好家のための '\' QUOTの\ 'B'(うわー、あなたが実際にバックスラッシュとバッククォートinsiceバッククォートをエスケープすることができますか?)。 – delnan

+34

また、 'a \' div \ 'b';私が正しく覚えていれば、 'quot'は(デマが欲しいのと同じように)切り詰められ、' div'はゼロに向かって丸められます。 '(-3)\' quot \ '4 == 0'、'(-3)\ 'div \' 4 == -1'です。 –

+4

+1は 'div'に+1します。もっと数学的にうまく動作し、 'quot'は負の数があるときには雌です。 – luqui

0

は、ここで私は自分自身にするためにやったことだ:

quot' a b 
     | a<b = 0 -- base case 
     | otherwise = 1 + quot' a-b b 
関連する問題