悲しみ…

こういうファイル test-simple.lisp と:

;; -*- coding: utf-8; -*-
;; test-simple.lisp
(provide 'test.simple)

(defpackage :test
  (:use :cl))

(in-package :test)

(defpackage :test.simple
  (:use :cl)
  (:export tests ok))

(in-package :test.simple)

(defvar *test-amount* 1)

(defun tests (n)
  (setq *test-amount* 1)
  (format t "1..~A~%" n))

(defun ok (expression &optional comment)
  (unless comment
    (setq comment ""))
  (if expression
      (format t "ok ~A ~A~%" *test-amount* comment)
    ;; else
    (format t "not ok ~A ~A~%" *test-amount* comment))
  (setq *test-amount* (+ 1 *test-amount*)))

それを使うファイル demo-test-simple.lisp:

(require :test-simple)

;; テストの数を宣言します。
(tests 1)

(let ((foo 32)
      (bar 32))
  ;; テストを行い、ok または not ok を出力します。
  (ok (equal foo bar) "foo is bar"))

を同じディレクトリに置いて:

% clisp ./demo-test-simple.lisp

と打つと:

*** - LOAD: A file with name TEST-SIMPLE does not exist

というエラーが出る。
(require "test-simple") という風に文字列にすると require できる。
しかし、今度は:

*** - EVAL: undefined function TESTS

というエラーが出る。
testsok の前に test.simple:: をつけると大丈夫。

δ(・ω・`)ウーン…

やっぱり Clojure から始めたのがいけなかったのかも……。

(」・ω・)」 なんで名前空間が package なんだよおおーーーーーーー!!!!!!!!