mirror of
https://github.com/kanaka/mal.git
synced 2024-10-27 14:52:16 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
17 lines
527 B
Plaintext
17 lines
527 B
Plaintext
;; Like load-file, but will never load the same path twice.
|
|
|
|
;; This file is normally loaded with `load-file`, so it needs a
|
|
;; different mechanism to neutralize multiple inclusions of
|
|
;; itself. Moreover, the file list should never be reset.
|
|
|
|
(def! load-file-once
|
|
(try*
|
|
load-file-once
|
|
(catch* _
|
|
(let* [seen (atom {"../lib/load-file-once.mal" nil})]
|
|
(fn* [filename]
|
|
(if (not (contains? @seen filename))
|
|
(do
|
|
(swap! seen assoc filename nil)
|
|
(load-file filename))))))))
|