我有一些代碼可以查找當前目錄中某種類型的最近修改過的文件(見下文)。我的問題是:是否有更簡潔,也許更習慣的球拍,表達這種代碼的方式?這個想法很簡單:在目錄中獲取某種類型的所有文件,並從中選擇最近修改的文件。我使用for*/list
嘗試了cwd-paths-of-type
的變體,並且它看起來不太可讀。我覺得我失去了一些東西。任何人都可以啓發我嗎?球拍 - 完成列表解析的最簡潔方法?
#lang racket
(define FILETYPE ".pdf")
(define (cwd-paths-of-type filetype)
(filter
(lambda (p)
(define filename (path->string p))
(and
(>= (string-length filename) 4)
(string=?
(substring filename (- (string-length filename) 4))
filetype)))
(directory-list)))
(define (last-mod-path paths)
(define last-mod-time
(apply
max
(map file-or-directory-modify-seconds paths)))
(first
(filter
(lambda (p)
(equal?
(file-or-directory-modify-seconds p)
last-mod-time))
paths)))
(displayln
(last-mod-path (cwd-paths-of-type FILETYPE)))
'argmax'就是我在找的東西,我猜!謝謝。 'filename-extension'也有幫助。我正在尋找一個名爲'filename-suffix'的函數。 – Yawar