我正在研究SBCL中的项目euler问题,并为每个解决方案保留一个简短的文件.每个问题都有一些基于5 am的测试,这些测试是从"主要"测试套件中引用的.运行"tests.lisp"时会运行这些测试.由于我厌倦了手工维护文件列表,我写了一些代码来为我做:
(defpackage #:euler/asdf
(:use :cl :asdf))
(in-package #:euler/asdf)
;; directory containing the problem files
(defparameter +dir+ "/home/stefan/quicklisp/local-projects/euler")
;; build file list for package components
(defun files-for-problems (dir)
(mapcar #'(lambda (p) (list :file (pathname-name p) :depends-on '("package")))
(directory (concatenate 'string dir "/e????.lisp"))))
;; build dependency list for all tests component
(defun depends-on-problems (dir)
(mapcar #'pathname-name
(directory (concatenate 'string dir "/e????.lisp"))))
;; define euler system
(defsystem euler
:name "euler"
:author "Stefan Schmiedl"
:description "Solutions to problems at http://projecteuler.net"
:depends-on ("iterate" "fiveam" …Run Code Online (Sandbox Code Playgroud)