我試圖將給定的十進制值轉換爲其對應的二進制形式。我正在使用Ocaml,對此我不太瞭解,而且很困惑。到目前爲止,我有以下代碼Ocaml中從十進制到二進制的轉換
let dec_to_bin_helper function 1->'T' | 0->'F'
let dec_to_bin x =
List.fold_left(fun a z -> z mod 2 dec_to_bin_helper a) [] a ;;
我必須包括在這裏,我想我的輸出將在T的和F的列表的形式,其中T的代表二進制1和F的代表二進制的0 如果我嘗試運行上面的代碼,它給了我一個錯誤,說:「錯誤:這個表達式不是一個函數;它不能被應用」 我明白,我打電話給輔助函數的部分是錯誤的...在這件事上的任何幫助會不勝感激!
尼基,這正是我想要做的,現在我明白我是如何錯誤地使用fold_left的。感謝您的解釋!但是,爲了讓事情更清楚,你介紹一下你的嵌套函數「在d2b x [] ;;中使用rec d2b x lst =(* code *)」作品?特別是如果我手工追蹤這個問題,「在d2b x [] ;;」工作? – 2010-10-18 17:18:19
啊,當然。 d2b是一個嵌套函數。讓rec d2b x =(* code *)在聲明函數時,下面的代碼在x上調用它(我可能不應該重用相同的變量名,我將編輯它)和一個空列表。我選擇這樣做的原因是,您可以調用dec_to_bin#並且不必擔心列表。 – 2010-10-18 17:34:23
這使得現在很有意義。再次感謝!如果我理解正確的話,那麼它意味着來自「dec_to_bin」的「x」被傳遞爲「d2d」作爲「y」,然後作爲「d2b」自稱「y」被修改並因此得到我們的列表?對不起,如果我問了太多問題,我只是想讓基礎知識正確!非常感謝你的幫助! – 2010-10-18 18:26:06