2016-04-01 14 views
2

ich das folgende Stück Code, das Problem ist, dass ich versuche, eine Double von einem IntHaskell teilen Doppel von Int

factorial :: Int -> Int 
factorial 0 = 1 
factorial e = e * (factorial e-1) 

sumX :: Double -> Int -> Double 
sumX x 0 = (x^0)/(factorial 0) 

zu teilen Wie kann ich es an die Arbeit?

+0

" "um es zu verdoppeln". Google Casting. – StefanS

+4

@daredevil err no ... Haskell nicht * cast *;) (aber du wirst einen tollen Webcast finden, wenn du es tust) – Carsten

+0

Chris hat dir die Antworten gegeben, die du brauchst, also lass mich dir eine Frage stellen: warum würdest du das tun? " x^0)/(faktorielle 0) 'wenn es sowieso" 1/1 = 1 "ist? – Carsten

Antwort

6

Ein Problem ist, dass Sie Ihre faktorielle Funktion falsch geklammert haben. Sie sollten

factorial e = e * factorial (e - 1) 

schreiben Zweitens können Sie die fromIntegral Funktion nutzen jeden Integraltyp umwandeln (eine Instanz der Integral Klasse) an einem beliebigen numerischen Typ (eine Instanz der Num Klasse)

sumX x 0 = x^0/fromIntegral (factorial 0)