diff --git a/uiop/os.lisp b/uiop/os.lisp
index 0de9bd34103eb260c509056e12011befb7bbb3ba..6d7afebe520813a1b178139f2debb8205e87e7dd 100644
--- a/uiop/os.lisp
+++ b/uiop/os.lisp
@@ -278,7 +278,7 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie
           #+genera (setf *default-pathname-defaults* x)
           #+lispworks (hcl:change-directory x)
           #+mkcl (mk-ext:chdir x)
-          #+sbcl (symbol-call :sb-posix :chdir (sb-ext:native-namestring x))
+          #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :chdir (sb-ext:native-namestring x)))
           (error "chdir not supported on your implementation")))))
 
 
diff --git a/uiop/utility.lisp b/uiop/utility.lisp
index a9c422725781387158983afea8a9f30edfefd599..230c0c76fd81c79cee4eb9a106863c50685400b4 100644
--- a/uiop/utility.lisp
+++ b/uiop/utility.lisp
@@ -380,6 +380,7 @@ and EVAL that in a (FUNCTION ...) context."
     (etypecase fun
       (function fun)
       ((or boolean keyword character number pathname) (constantly fun))
+      (hash-table (lambda (x) (gethash x fun)))
       (symbol (fdefinition fun))
       (cons (if (eq 'lambda (car fun))
                 (eval fun)