Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 使用非递归列表_List_F# - Fatal编程技术网

List 使用非递归列表

List 使用非递归列表,list,f#,List,F#,所以我最近一直在研究列表。 我想创建一个非递归函数name:int list->int,它返回列表中最高和最低数字之间的差值。 是否有一种简单的方法可以使用list.fold、list.filter或list.exist执行此操作? 我想我可以用list.max和list.min来实现它,但我想试试其他一些功能 有什么帮助吗?你的意思是这样的 let distanceMinMax xs = let (min,max) = List.fold (fun (min, max) x ->

所以我最近一直在研究列表。 我想创建一个非递归函数
name:int list->int
,它返回列表中最高和最低数字之间的差值。 是否有一种简单的方法可以使用
list.fold、list.filter或list.exist执行此操作?

我想我可以用
list.max
list.min
来实现它,但我想试试其他一些功能


有什么帮助吗?

你的意思是这样的

let distanceMinMax xs = 
    let (min,max) = List.fold (fun (min, max) x -> ((if x < min then x else min), (if x > max then x else max))) 
                              (System.Int32.MaxValue, System.Int32.MinValue)
                              xs
    (max - min)
提示:不支持空列表[]:

> distanceMinMax [];;
val it : int = 1

List.fold
:当然可以-
List.filter
AFAIK no-
List.Exist
。。。嗯。。。你能用语言表达你想/必须做什么吗?提示:您可以将每个循环转换为
折叠
而不是机械地…您可以使用选项处理空列表案例;返回None和一些距离,否则(作为一个旁白,在第一个if-我不能编辑,因为它的字符太少)很好的提示@Sehnsucht!我刚刚修正了这个函数。
> distanceMinMax [];;
val it : int = 1