Functional programming 类型不匹配时出错
我在SML上写这个函数。它应该列出可能的名字变体(我的名字是Victoria,so V,Vic,Vicky等),并创建{altname1,middle,last},{alt2,middle,last}的记录 这是我的代码:Functional programming 类型不匹配时出错,functional-programming,pattern-matching,sml,ml,Functional Programming,Pattern Matching,Sml,Ml,我在SML上写这个函数。它应该列出可能的名字变体(我的名字是Victoria,so V,Vic,Vicky等),并创建{altname1,middle,last},{alt2,middle,last}的记录 这是我的代码: fun similar_names (substits:, name) = let val {first=n1, second=n2, third=n3} = name fun name_constructor (altnames:string l
fun similar_names (substits:, name) =
let
val {first=n1, second=n2, third=n3} = name
fun name_constructor (altnames:string list, acc) =
case altnames of
[] => acc
| a::aa => {first=a, second=n2, third=n3}::acc
in
name_constructor( get_substitutions2(substits, n1),name)
end
get_substitutions2只会给出一个名字的所有可能变体的列表(即:字符串列表),它是有效的
我得到的错误是:
a02.sml:65.2-65.58 Error: operator and operand don't agree [tycon mismatch]
operator domain: string list * {first:string, second:'Z, third:'Y} list
operand: string list * {first:string, second:'Z, third:'Y}
in expression:
name_constructor (get_substitutions2 (substits,n1),name)
我不明白为什么会在唱片列表和唱片单之间徘徊。您能帮忙吗?
name
只是一条记录,但是name\u构造函数
希望acc
是一个列表(因为您说::acc
)。试一试
name
只是一条记录,但是name\u构造函数
希望acc
是一个列表(因为您说::acc
)。试一试
可能是键入错误或复制/粘贴错误,但编译器不喜欢
(子项:,名称)
中的悬空冒号。可能是键入错误或复制/粘贴错误,但编译器不喜欢(子项:,名称)
中的悬空冒号。
name_constructor(get_substitutions2(substits, n1), [name])