Functional programming “u”的使用&引用;在函数Ocaml中
如果我有一个没有参数且在列表上工作的函数,比如:Functional programming “u”的使用&引用;在函数Ocaml中,functional-programming,ocaml,Functional Programming,Ocaml,如果我有一个没有参数且在列表上工作的函数,比如: let listToCheck = function [] -> raise (Failure "No elements") | hd :: tl -> returnTrueOrFalse _ (*Where "_" should be the list*) 使用returnTrueOrFalse定义为: let returnTrueOrFalse list_ = .... (*retur
let listToCheck = function
[] -> raise (Failure "No elements")
| hd :: tl -> returnTrueOrFalse _ (*Where "_" should be the list*)
使用returnTrueOrFalse
定义为:
let returnTrueOrFalse list_ = .... (*returns true or false*)
.
(*some code*)
.
let isTrue = listToCheck [1;2;3] in isTrue
现在,listToCheck
在列表上被调用,并且没有参数
另一方面,returnTrueOrFalse
需要一个参数
由于
listToCheck
是一个调用列表的函数,我可以在listToCheck
中使用将该列表作为returnTrueOrFalse
的参数传递吗?如果是,怎么做?您可以重新构建列表,或对模式进行别名,或者根本不拆分为头和尾:
let listToCheck = function
| [] -> raise (Failure "No elements")
| hd :: tl -> returnTrueOrFalse (hd::tl)
您可以重建列表,或对模式进行别名,或根本不拆分为头和尾:
let listToCheck = function
| [] -> raise (Failure "No elements")
| hd :: tl -> returnTrueOrFalse (hd::tl)
您的函数根本不需要进行模式匹配:
let listToCheck list =
if list = [] then failwith "No elements"
else returnTrueOrFalse list
然而,您可能会问一个更一般的问题,而不是关于这个特定的代码。对于一般情况,我认为,as
模式可能就是您所寻找的,正如@Bergi所建议的那样。您的函数实际上根本不需要进行模式匹配:
let listToCheck list =
if list = [] then failwith "No elements"
else returnTrueOrFalse list
然而,您可能会问一个更一般的问题,而不是关于这个特定的代码。对于一般情况,我认为,as
模式可能就是您正在寻找的,正如@Bergi所建议的那样。不清楚您所说的“使用匿名函数”是什么意思,也不清楚您为什么要这样做。你不能只写print_字符串(如果returnTrueOrFalse[1;2;4;8]然后是“True”或者“False”)代码>?我对这个问题做了一点修改,不是在函数上,而是在“\ux”上。不清楚“使用匿名函数”是什么意思,或者为什么要这样做。你不能只写print_字符串(如果returnTrueOrFalse[1;2;4;8]然后是“True”或者“False”)代码>?我对这个问题做了一点修改,不是在函数上,而是在“\ux”上。是的,这正是我想要的,“as list”!非常感谢。是的,这正是我要找的“名单”!非常感谢你。