lisp——遍历目录

本文探讨了在LISP中遍历目录的复杂性,包括理解路径名概念、针对不同LISP实现编写特定代码以及处理不同操作系统之间的差异。作者分享了一段示例代码,虽然在目录结构过大时可能效率不高,但对于理解如何在LISP中进行目录遍历具有参考价值。
摘要由CSDN通过智能技术生成

    lisp是一门强大的语言无可否认,但有时候lisp还是免不了很二,比如:遍历目录!

    不管是用C还是python想要遍历指定的目录都很简单,而且跨平台也很容易;但对于lisp如果你想遍历一个目录下的所有文件,情况则没那么简单。首先你得清楚路径名的概念,然后,对于不同的lisp实现你得编写不同的代码,最后,你还得考虑windows与linux或者其他操作系统在目录结构上的差异。总之,如果你一直很懒,一直都不曾编写通用的、跨平台的目录遍历函数,那么每当你有遍历目录的需求时,你都会很纠结。

    lisp下遍历目录的代码:

;;;;directory operation
(defun component-present-p (value)
  (and value (not (eql value :unspecific))))

(defun directory-pathname-p (p)
  (and
   (not (component-present-p (pathname-name p)))
   (not (component-present-p (pathname-type p)))
   p))

(defun pathname-as-directory (name)
  (let ((pathname (pathname name)))
    (when (wild-pathname-p pathname)
      (error "Can't reliably convert wild pathnames."))
    (if (not (directory-pathname-p name))
	(make-pathname
	 :directory (append (or (pathname-directory pathname) (list :rela
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值