(require-package 'haskell-mode)
(autoload 'haskell-mode "haskell-mode")
(setq haskell-program-name "/usr/bin/ghci")
(eval-after-load 'haskell-mode
'(require-package 'smartparens))
(eval-after-load "haskell-cabal"
'(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
(defun toby/haskell-init ()
(turn-on-haskell-doc-mode)
(turn-on-haskell-indentation)
(require 'smartparens-config)
(smartparens-strict-mode)
(show-smartparens-mode t)
(define-key haskell-mode-map (kbd "s-r") 'inferior-haskell-load-and-run)
(define-key haskell-mode-map (kbd "C-c l") 'inferior-haskell-load-and-run)
(define-key haskell-mode-map (kbd "C-;") 'insert-arrow)
(define-key haskell-mode-map (kbd "C-:") 'insert-rocket)
(define-key haskell-mode-map (kbd "C-=") 'insert-larrow)
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left)
(define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right)
(define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile)
(define-key haskell-mode-map (kbd "C-h h") 'hoogle)
(define-key haskell-mode-map (kbd "C-x C-d") nil)
(define-key haskell-mode-map (kbd "C-c C-z") 'haskell-interactive-switch)
(define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-file)
(define-key haskell-mode-map (kbd "C-c C-b") 'haskell-interactive-switch)
(define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type)
(define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info)
(define-key haskell-mode-map (kbd "C-c M-.") nil)
(define-key haskell-mode-map (kbd "C-c C-d") nil))
(add-hook 'haskell-mode-hook 'toby/haskell-init)