Racket中的递归FTP下载

Racket中的递归FTP下载,ftp,racket,Ftp,Racket,我正在尝试使用racket中的net/url包从下面列出的ftp链接递归下载../whistourceMapping/目录的所有子目录中某个参数*.txt.gz的所有文件 代码的粗体部分是我被卡住的地方——看起来(ftp下载文件…)函数接受conn、导出目录和“文件名”,但我想下载目录中的所有文件 我是否必须将ftp下载文件映射到从(ftp目录列表…)功能收集的文件名列表上 (define get-unichem-mappings (lambda (export-dir) (let*

我正在尝试使用racket中的net/url包从下面列出的ftp链接递归下载../whistourceMapping/目录的所有子目录中某个参数*.txt.gz的所有文件

代码的粗体部分是我被卡住的地方——看起来(ftp下载文件…)函数接受conn、导出目录和“文件名”,但我想下载目录中的所有文件

我是否必须将ftp下载文件映射到从(ftp目录列表…)功能收集的文件名列表上

(define get-unichem-mappings
  (lambda (export-dir)
   (let* ([server "ftp.ebi.ac.uk"]
          [remote-dir "/pub/databases/chembl/UniChem/data/wholeSourceMapping/"]
          [conn (ftp-establish-connection
                 server
                 21
                 "anonymous"
                 "")])
  (ftp-cd conn remote-dir)
  ;(printf "~a" (ftp-directory-list conn "."))
  (map
   (lambda (elem) (displayln (string-join elem "\t")))
   (ftp-directory-list conn "."))
  (ftp-download-file conn "." <**not sure how to descend file tree with ftp**>)
  (ftp-close-connection conn))))
(定义获取unichem映射
(lambda(出口主任)
(let*([服务器“ftp.ebi.ac.uk”]
[remote dir”/pub/databases/chembl/UniChem/data/whistourcemapping/“]
[conn(ftp)建立连接
服务器
21
“匿名”
"")])
(ftp cd连接远程目录)
;(printf“~a”(ftp目录列表连接)
(地图
(lambda(元素)(displayln(字符串连接元素“\t”))
(ftp目录列表连接“))
(ftp下载文件conn.)
(ftp关闭连接连接)