我做了一个函数,它接受一个列表和一个列表列表,并返回一个新的列表列表。F#函数作为匹配函数中的参数
let rec calculator list SS =
match (List.item(0) SS) with
|[] -> []
|_ -> match (validate list (List.item(0) SS)) with
|(validate theCode list) -> List.append [(List.item(0) SS)] (calculator list (SS.[1..]))
|_ -> (calculator list (SS.[1..]))
validate是返回两个元组intt整数的函数。例如(1,1)
名单是四个整数
SS列表中列出的四个整数
导出代码列表被四个整数
我得到的错误清单“模式鉴别器'validate'没有被定义。“
也许这是一个愚蠢的问题,但没有一个我不知道答案。
不允许在匹配表达式中使用函数作为参数。或者是在这里完全不同的东西?
就我所知,两个验证函数将返回两个元组,因此应该能够匹配。
我想你想在这里上的有源图案 –
*“验证是一个函数,返回两个元组int。“*假设函数验证某个输入,当输入有效时它返回什么?当输入无效时它会返回什么? –
为了编译,用'|替换'|(验证代码列表) - >'| x当x =(验证代码列表) - >'。但正如@约翰·帕尔默所暗示的那样,这很简单丑陋 - 甚至'if..else'在这里也会更干净。 – ildjarn