2013-10-27 55 views
0

我有幾個問題與fold_left/right相關。OCaml - 與使用fold關聯的問題_

  1. 如何積累兩個或更多值?如果使用元組是很好的解決方案?
  2. 如何中止摺疊工作?例如,我們必須首先發現任何數字,並返回位置。我的意思是休息(C++)。
+0

'我們必須首先發現任何數字'然後你必須遍歷所有的列表[1; 1; 1; 1; 5],不需要在這裏中止。爲了處理部分遞歸,還有其他的功能,如dropwhile,take ...或者你可以定義你需要的。請參閱在類型之間摺疊爲投影,您有源類型和具有種子值(累加器)的目標類型,然後摺疊是實現此轉換的過程。是的,使用元組是很好的解決方案,IMO。 – zurgl

回答

1

zurgl的評論是一個很好的答案(也許將其下移到答案區域)。

您可以使用異常提前終止摺疊。嘗試構建你的代碼是很好的,所以你不必這樣做(在我看來)。沒有例外的代碼更容易理解,更加可組合,可並行化等。

+0

感謝您的讚賞 – zurgl

1

we must find firstly occurrence of any number然後你必須遍歷所有你的列表[1; 1; 1; 1; 5],不需要在這裏中止。爲了處理部分遞歸,還有其他的功能,如dropwhile,take ...或者你可以定義你需要的。請參閱在類型之間摺疊爲投影,您有源類型和具有種子值(累加器)的目標類型,然後摺疊是實現此轉換的過程。是的,使用元組是很好的解決方案,IMO。