【发布时间】:2020-02-11 00:23:41
【问题描述】:
我正在使用 Ocaml 中的列表,因此我编写了一个打印列表内容的函数。 这是我的代码:
let leastB = [false; true; true; true; true; false; false; false; true]
let leastI = [-16; 4; 7; 3444; -100]
let prListInt l =
Printf.printf "[";
let rec prListIntrec l =
match l with
[] -> Printf.printf "]\n"
| g :: []-> Printf.printf "%d]\n" g
| g :: t -> Printf.printf "%d; " g; prListIntrec t
in
prListIntrec l
let prListB l =
Printf.printf "[";
let rec prListBrec l =
match l with
[] -> Printf.printf "]\n"
| g :: []-> Printf.printf "%B]\n" g
| g :: t -> Printf.printf "%B; " g; prListBrec t
in
prListBrec l
let () =
prListB leastB;
prListInt leastI
它工作正常,但我需要为每种类型的数据创建一个新函数还是有办法统一这些函数?
任何改进代码的提示(它是惯用的 Ocaml 吗?)?
【问题讨论】:
-
这几乎是高阶函数用例的教科书示例。你了解过吗?这是作业还是练习?因为它确实看起来像一个
-
查看
Batteries.dump,这对于打印任意对象很有用 -
这是一个练习,我正在从一本书中学习(没有解决方案),准备下学期的课程。高阶函数我还没学过,也不知道是什么意思。
-
高阶函数是将另一个函数作为参数(或返回一个函数)的函数,通常是为了特化更通用算法的一小部分。
List.map是高阶函数的一个例子。您当前所在的部分的标题是什么? -
制作清单 ;-)