import Data.List (find)
import Data.Char (digitToInt)

findTo :: Int -> Maybe Int
findTo n = find ((n==) . sum. map digitToInt . show) $ [1..(10^21)]
findTo' :: Int -> Maybe Int
findTo' n = find ((n==) . sum . map digitToInt . show) $ [1..(10^20)]

ghci> findTo 27
Nothing
ghci> findTo' 27
Just 999

find以外を使えばこういうことは起らないんですかね?
さいきん勉強しはじめたので、まったく原因が分らないです。

ちなみに、すごいHaskellたのしく学ぼう の6章あたりの問題です。