80

calc v d = calc' 1
  where
    calc' x
      | v < (d * 10 + x) * x = x - 1
      | otherwise = calc' (x + 1)

root v d
  | v == 0 = []
  | otherwise = x : root ((v - p) * 100) (d * 10 + x * 2)
  where
    x = calc v d
    p = (d * 10 + x) * x

root n 0 でsqrt(n)の無限リストが生成される

適当だけどこんな方法も…。変数名も適当…。calcは2分探索ぽくすれば早くなるかも知れないけど小数部ではN<10なのであんまり意味無いかもと思って逐次探索のまま。