f :: Double -> Int -> Int -> Double f p s l | s > 0 && l > 1 = p * (f p (s-1) l) + (1-p) * (f p s (l-1)) | s > 0 && l == 1 = p * f p (s-1) l | s == 0 = 1