Guest User

Untitled

a guest
Mar 23rd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. (defun dir (&key (package *package*) (prefix ""))
  2. "Returns a list of symbols inside PACKAGE (defaults to the current package), optionally restricted to those whose name begins with PREFIX."
  3. (let ((found-symbols '()))
  4. (do-symbols (sym package)
  5. (multiple-value-bind (_ status) (find-symbol (symbol-name sym) package)
  6. (declare (ignore _))
  7. (when (eq status :internal)
  8. (let* ((len (length prefix))
  9. (match-substr (subseq (symbol-name sym) 0 len)))
  10. (if (string= match-substr prefix)
  11. (push sym found-symbols))))))
  12. found-symbols))
  13.  
  14. ;;; Sample use:
  15. ;CL-USER> (dir)
  16. ;(MATCH-SUBSTR TO SYM FOO FOUND-SYMBOLS FROM ITER P UNTIL STATUS PREFIX _
  17. ; QUICKLISP-INIT FINALLY FOR X LEN Y DIR)
  18. ;CL-USER> (dir :prefix "F")
  19. ;(FOO FOUND-SYMBOLS FROM FINALLY FOR)
Add Comment
Please, Sign In to add comment