【发布时间】:2021-09-14 04:13:13
【问题描述】:
免责声明,这是在线课程的一部分,但我已经解决了作业。我的问题是关于记录工作的模式匹配?
所以在第一个函数中我不必指定记录的结构
fun generateName (ls , name)=
case ls of
[] => name::[]
| x::xs =>
{
first= x,
middle= #middle name,
last= #last name
}
:: generateName(xs, name);
在这个函数中我做。否则我会收到一个弹性记录错误。
fun createName (f, name :{first:string, middle:string, last:string}) =
case f of
x =>
{
first= x,
middle= #middle name,
last= #last name
}
更令人困惑的是,这个没有错误
fun generateName2 (nms, name) =
let fun aux (ls, name, acc) =
case ls of
[] => name::acc
| x::xs =>
aux(xs, name,
{
first= x,
middle= #middle name,
last= #last name
} :: acc)
in
aux (nms, name, [])
end
什么时候必须指定记录字段?
【问题讨论】:
标签: functional-programming sml