まず第一に、これは宿題の質問であるため、単純なコードなどを探しているわけではなく、誰かが私のロジックを手伝ってくれるだけであることに注意してください。
割り当ては DrRacket にあります。質問は尋ねます:
与えられた FileSystem は、name と contents の 2 つのフィールドを持つ構造体として定義されています。ここで、contents はディレクトリまたはファイルのリストです。ディレクトリ内のすべてのファイルに「.bak」ファイル名を作成し、ファイルの直後に配置する関数を作成します。
私は完全に迷っています。私の論理は次のとおりです。コンテンツ リストの最初のものがファイルの場合、そのファイルと「.bak」が追加された新しいファイルでディレクトリを作り直すだけです。これは私が得ることができる限りです-サブディレクトリがある場合に物事を解決する方法、またはリストをさらに下に移動する方法がわかりません。
これが私の凶悪なコードです:
(define (backup my-fs)
(cond
[(empty? (dir-contents my-fs)) empty]
[(file? (first (dir-contents my-fs))) (make-dir (dir-name my-fs) (append (backup-list (first (dir-contents my-fs)))(rest (dir-contents my-fs))))]
[(dir? (first (dir-contents my-fs))) (backup (first (dir-contents my-fs)))]))
誰でも私がこれを推論するのを助けることができますか?