Simple package management system to ensure the name space for each directory or file.
CL-USER> (load "simplisp.lisp")
Directory to read have "main.lisp"
in /home/user directory
test
├── __main__.lisp
├── __test__.lisp
├── classes.lisp
├── exports.lisp
├── options.lisp
├── tests
│ ├── __main__.lisp
│ └── __test__.lisp
└── utils
├── __main__.lisp
├── __test__.lisp
├── list.lisp
├── macro.lisp
├── path.lisp
└── string.lisp
CL-USER> simple:*repository*
("./" "../" "~/")
CL-USER> (push "~/.lisp/" simple:*repository*)
("~/.lisp/" "./" "../" "~/")
CL-USER> (simple:require :test)
#<PACKAGE TEST.UTILS.LIST>
#<PACKAGE TEST.UTILS.PATH>
....
#<PACKAGE TEST.OPTIONS>
#<PACKAGE TEST>
Can also require the partial
CL-USER> (simple:require :test.utils)
#<PACKAGE TEST.UTILS.LIST>
#<PACKAGE TEST.UTILS.PATH>
....
#<PACKAGE TEST.UTILS.MACRO>
#<PACKAGE TEST.UTILS>
If you want to reload
CL-USER> (simple:require :test.utils.string :force t)
#<PACKAGE TEST.UTILS.STRING>
'require and 'use-package
(simple:import :test.utils)
There is no need to write "export" in other than "main.lisp".
But if you want to export all of other package's external symbols
(simple:attach :test.options)
(simple:attach '(:test.utils.string
:test.utils.list))
load "test.lisp"
CL-USER> (simple:test :test.utils)
---------Test Start---------
#<PACKAGE TEST.UTILS-TEST>
;; Loading file /Users/emanon/.simplisp/test/utils/__test__.lisp ...
.......
;; Loaded file /Users/emanon/.simplisp/test/utils/__test__.lisp
----------Test End----------
CL-USER> (simple:search :test.utils)
#P"/home/user/test/utils/"
CLISP,SBCL,ClozureCL,ABCL
Maybe ... AllegroCL,LispWorks
Common Lisp is very interesting!