That seems a really weird way to write it! Who decided all auxiliary
functions should be called go? (I think I'm blaming dons) - why not:
sffi n | toInteger n2 == n = Just n2
sffi :: (Integral a,Num a) => Integer -> Maybe a
| otherwise = Nothing
where n2 = fromInteger n