簡體   English   中英

OCaml:如何遍歷記錄類型中的列表參數

[英]OCaml: How to traverse a list parameter in a record type

如果我有這樣的數據結構

type cost = int

type 'a map = {
  cities : 'a list
  routes : ('a * 'a * cost) list
}

並說我有一個 function 和一個 header 例如

let nearest_cities (m : 'a map) = ...

我想遞歸遍歷路由列表,最好和最干凈的方法是什么? 我試圖匹配記錄,但是我不確定如何遞歸更新記錄的參數

謝謝

你說你想更新記錄,但是你定義的記錄類型是不可變的。 您無法更改此類記錄的字段值。 用函數式語言處理這個問題的通常方法是創建一個包含所需新內容的新記錄。

你說你想“遍歷”列表,但這還不夠具體,無法提供詳細的建議。 List模塊中有用於各種遍歷的函數: List.iterList.mapList.fold_left等。

例如,這是一個 function,它增加了類型為'a map的值的所有成本:

 let cost_incr map =
      { map with routes =
            List.map (fun (a, b, c) -> (a, b, c + 1)) map.routes
      }

(另請注意,您需要在記錄類型中cities字段;定義之后。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM