【发布时间】:2019-03-20 09:17:43
【问题描述】:
我是 SML 的新手,至少可以说感到很沮丧。
我使用一种数据类型,我将其称为 entry
datatype entry =
File of string
| Directory of string * contents
withtype contents = entry list
帮助我创建一个像这样的文件目录的复合模式
val files =
Directory("d1",
[ File "f1",
Directory("d2",
[ File "f2",
Directory("d3",[File "f3"])
]),
File "f4",
Directory("d3",[File "f5"])
]);
我想创建相互递归的函数(我刚刚学到的东西),它将在文件中单独打印每个条目。基本上有这样的输出:
d1 f1 ... f5
我试过这个:
fun print_entries (File s) = [s] (* I've even tried s^"\n" but that only gets me "f#\n" for each file *)
| print_entries (Directory(s, contents)) = s::(print_contents contents)
and
print_contents nil = nil
| print_contents (e::es) = print_entries e @ (print_contents es)
但它只输出条目列表。感谢您的所有帮助。
【问题讨论】: