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