Như Bạn có thể biết, có chức năng bậc cao trong OCaml, chẳng hạn như fold_left, fold_right, lọc, vvfold_tree trong OCaml
Mở khóa học của tôi trong lập trình chức năng đã được giới thiệu hàm có tên fold_tree, mà là một cái gì đó giống như fold_left/phải, không phải trên danh sách, nhưng trên cây (nhị phân). Nó trông giống như thế này:
let rec fold_tree f a t =
match t with
Leaf -> a |
Node (l, x, r) -> f x (fold_tree f a l) (fold_tree f a r);;
đâu cây được định nghĩa là:
type 'a tree =
Node of 'a tree * 'a * 'a tree |
Leaf;;
OK, đây là câu hỏi của tôi: làm thế nào để làm công việc chức năng fold_tree? Bạn có thể cho tôi một số ví dụ và giải thích bằng ngôn ngữ của con người không?
Cảm ơn bạn vì một ví dụ tuyệt vời ;). Nó đã giúp tôi hiểu những điều cơ bản, bây giờ tôi cần một cái gì đó khó khăn hơn. – equrts
** f lấy 3 đối số, tất cả cùng loại của cây và trả về giống nhau. ** Một là loại cây, hai cái còn lại là các bộ tích lũy của bất kỳ loại nào, phù hợp với giá trị mặc định phù hợp với một chiếc lá. – nlucaroni
@nlucaroni: Nó được viết cho ví dụ cụ thể này, nhưng nếu không bạn nói đúng. –