현재 디렉토리에서 특정 유형의 가장 최근에 수정 된 파일을 찾는 코드가 있습니다 (아래 참조). 내 질문은 : 더 간결하고, 아마도 더 관용적 인 라켓이 코드를 표현하는 방법이 있을까요? 아이디어는 매우 간단합니다. 특정 유형의 모든 파일을 디렉토리에서 가져 와서 가장 최근에 수정 한 파일을 선택하십시오. 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