Require cl, since it contains lexical-let.

I've installed brainfuck-mode using MELPA and also installed
langdoc. However, I get the following error on startup:

    Debugger entered--Lisp error: (void-function lexical-let)
      (lexical-let ((mode (intern (concat (symbol-name mode-prefix) "-mode"))) (setup (intern (concat (symbol-name mode-prefix) "-setup"))) (desc-fn (intern (concat (symbol-name mode-prefix) "-describe-symbol")))) (list (quote progn) (list (quote define-generic-mode) mode nil nil nil nil (list (quote quote) (list setup)) description) (if link-regexp (progn (list (quote defun) setup nil (quote (goto-char (point-min))) (list (quote while) (cons (quote re-search-forward) (cons link-regexp ...)) (list (quote lexical-let) (quote ...) (quote ...) (quote ...) (list ... ... ... ... ...)))))) (list (quote defun) desc-fn (quote (sym)) (list (quote interactive) (cons (quote let*) (cons (list (list ... ...) (quote ...) (list ... ...)) (quote (...))))) (list (quote if) (quote (null sym)) (quote (message "You didn't specify a symbol")) (list (quote lexical-let) (list (list (quote buf) (list ... helpbuf-name))) (list (quote with-current-buffer) (quote buf) (quote (setq buffer-read-only nil)) (cons (quote let) (cons ... ...))))))))
      (lambda (mode-prefix description helpbuf-name pointed-sym-fn symbols make-document-fn &optional link-regexp linked-str-fn make-link-fn prefix-str suffix-str) "Define help-mode and describe-symbol functions.\nIt defines MODE-PREFIX-mode which is a major mode to show help strings,\nand defines MODE-PREFIX-describe-symbol to show help strings in\nMODE-PREFIX-mode.  MODE-PREFIX-describe-symbol takes a string to show\na full documentation in a help buffer.  DESCRIPTION is a description\nof MODE-PREFIX-mode.  HELPBUF-NAME is a buffer name for\nMODE-PREFIX-mode.\n\nPOINTED-SYM-FN is a function which recieves no arguments and returns a\nstring pointed by the cursor.  MODE-PREFIX-describe-symbol uses\nPOINTED-SYM-FN when it is interactively called.  SYMBOLS is a list of\nstrings to complete the argument of MODE-PREFIX-describe-symbol.\nMAKE-DOCUMENT-FN is a function which takes a string and returns the\nstring which is a full document of the argument.\n\nLINK-REGEXP is a regexp to make links for MODE-PREFIX-describe-symbol.\nIf NIL, MODE-PREFIX-describe-symbol does not make any links in help\nbuffers.  LINKED-STR-FN is a function which takes substrings matched\nin LINK-REGEXP and returns a string to be linked.  MAKE-LINK-FN is a\nfunction which takes same arguments as LINKED-STR-FN and returns a\nstring which is a link to other document.  PREFIX-STR and SUFFIX-STR\nare the prefix and suffix of the return value of LINKED-STR-FN\nrespectively.\n\nFor instance, let LINK-REGEXP be \"`\\\\(.+\\\\)'\", LINKED-STR-FN\nbe (lambda (a b) (concat \"[\" b \"]\")), MAKE-LINK-FN\nbe (lambda (a b) b), and PREFIX-STR and SUFFIX-STR are \"`\" and\n\"'\" respectively.\n\nIn this case, a string \"`linked-str'\" becomes \"`[linked-str]'\"\nwith a link to \"linked-str\" in help buffer ." (lexical-let ((mode (intern (concat (symbol-name mode-prefix) "-mode"))) (setup (intern (concat (symbol-name mode-prefix) "-setup"))) (desc-fn (intern (concat (symbol-name mode-prefix) "-describe-symbol")))) (list (quote progn) (list (quote define-generic-mode) mode nil nil nil nil (list (quote quote) (list setup)) description) (if link-regexp (progn (list (quote defun) setup nil (quote (goto-char ...)) (list (quote while) (cons ... ...) (list ... ... ... ... ...))))) (list (quote defun) desc-fn (quote (sym)) (list (quote interactive) (cons (quote let*) (cons (list ... ... ...) (quote ...)))) (list (quote if) (quote (null sym)) (quote (message "You didn't specify a symbol")) (list (quote lexical-let) (list (list ... ...)) (list (quote with-current-buffer) (quote buf) (quote ...) (cons ... ...))))))))(bf-help "Major mode for brainfuck help" "*Brainfuck Help*" (quote bf-help-sym-called-at-point) (quote (">" "<" "+" "-" "." "," "[" "]")) (quote bf-help-lookup-doc) "`\\([^']+\\)'" (lambda (a b) b) (lambda (a b) b) "`" "'")
      (langdoc-define-help-mode bf-help "Major mode for brainfuck help" "*Brainfuck Help*" (quote bf-help-sym-called-at-point) (quote (">" "<" "+" "-" "." "," "[" "]")) (quote bf-help-lookup-doc) "`\\([^']+\\)'" (lambda (a b) b) (lambda (a b) b) "`" "'")
      eval-buffer(#<buffer  *load*-606818> nil "/home/wilfred/.emacs.d/elpa/brainfuck-mode-20140107.1017/brainfuck-mode-autoloads.el" nil t)  ; Reading at buffer position 558
      load-with-code-conversion("/home/wilfred/.emacs.d/elpa/brainfuck-mode-20140107.1017/brainfuck-mode-autoloads.el" "/home/wilfred/.emacs.d/elpa/brainfuck-mode-20140107.1017/brainfuck-mode-autoloads.el" nil t)
      load("/home/wilfred/.emacs.d/elpa/brainfuck-mode-20140107.1017/brainfuck-mode-autoloads" nil t)
      package-activate-1(brainfuck-mode [(20140107 1017) ((langdoc (20130601 1450))) "Brainfuck mode for Emacs"])
      package-activate(brainfuck-mode (20140107 1017))
      package-initialize()
      eval-buffer(#<buffer  *load*> nil "/home/wilfred/.emacs.d/init.el" nil t)  ; Reading at buffer position 548
      load-with-code-conversion("/home/wilfred/.emacs.d/init.el" "/home/wilfred/.emacs.d/init.el" t t)
      load("/home/wilfred/.emacs.d/init" t t)
      command-line()
      normal-top-level()

It looks like Emacs can't find lexical-let with requiring it. This patch
fixes that.