diff --git a/elisp/ghc-info.el b/elisp/ghc-info.el
--- a/elisp/ghc-info.el
+++ b/elisp/ghc-info.el
@@ -70,12 +70,18 @@
   (ghc-type-set-ix 0)
   (ghc-type-set-point 0)
   (setq after-change-functions
-	(cons 'ghc-type-deleve-overlay after-change-functions)))
+	(cons 'ghc-type-delete-overlay after-change-functions))
+  (set (make-local-variable 'post-command-hook) 'ghc-type-post-command-hook))
 
-(defun ghc-type-deleve-overlay (beg end len)
+(defun ghc-type-delete-overlay (&optional beg end len)
   (when (overlayp ghc-type-overlay)
     (delete-overlay ghc-type-overlay)))
 
+(defun ghc-type-post-command-hook ()
+  (when (and (overlayp ghc-type-overlay)
+	     (/= (ghc-type-get-point) (point)))
+    (ghc-type-delete-overlay)))
+
 (defun ghc-show-type ()
   (interactive)
   (if (not (ghc-which ghc-module-command))
@@ -119,7 +125,10 @@
      (lambda ()
        (cd cdir)
        (apply 'call-process ghc-module-command nil t nil
-	      `(,@(ghc-make-ghc-options) "type" ,file ,modname ,ln ,cn))))))
+	      `(,@(ghc-make-ghc-options) "type" ,file ,modname ,ln ,cn))
+       (goto-char (point-min))
+       (while (search-forward "[Char]" nil t)
+	 (replace-match "String"))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
diff --git a/elisp/ghc.el b/elisp/ghc.el
--- a/elisp/ghc.el
+++ b/elisp/ghc.el
@@ -16,7 +16,7 @@
 
 ;;; Code:
 
-(defconst ghc-version "1.10.2")
+(defconst ghc-version "1.10.4")
 
 ;; (eval-when-compile
 ;;  (require 'haskell-mode))
diff --git a/ghc-mod.cabal b/ghc-mod.cabal
--- a/ghc-mod.cabal
+++ b/ghc-mod.cabal
@@ -1,5 +1,5 @@
 Name:                   ghc-mod
-Version:                1.10.3
+Version:                1.10.4
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
