gpt4 book ai didi

涉及列表的 OCaml 错误

转载 作者:行者123 更新时间:2023-12-01 03:57:20 25 4
gpt4 key购买 nike

我对 OCaml 还是很陌生,希望在优化代码方面得到一些帮助。

我试图将给定列表的每个元素乘以列表的最后一个元素。

这是我的代码片段:

(* Find the last element of a function *)
let rec lastE = function
| [] -> []
| [x] -> x
| _ :: t -> lastE t;;

(*multiply a list by the last element*)
let rec lmul list =
match list with
[] -> []
| hd::tl -> (hd *. (lastE tl)) :: lmul tl;;

当我运行代码时,我收到此错误消息:
Error: This expression has type float list but 
an expression was expected of type 'a list list

我已经研究了一段时间,但是对于这个问题的任何帮助将不胜感激。

最佳答案

换一种说法,戴夫 Newman 告诉你的是,你的基本问题是 lastE需要以不同的方式处理空列表。如果 lastE应该返回一个数字,它必须在所有情况下返回一个数字。就目前而言,lastE当它收到一个空列表时返回一个列表。

如果您不想使用 List.map (再次像 Dave Newman 建议的那样),您至少可以考虑调用 lastE列表中的每个元素只需一次而不是一次。这将对长列表产生很大的影响。

关于涉及列表的 OCaml 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com