0
我需要轉換斌到十二月這是什麼功能呢,哈斯克爾
我發現在互聯網下面的代碼的算法,但我只是不知道,什麼一些變量的含義:
bin2dec :: [Int] -> Int
bin2dec n = foldl (\a x->2*a+x) 0 n
我已經知道與foldl 但什麼手段(\一個X-> 2 * A + X)0 N 我不知道是什麼\斧 - > 2種* A + X手段,也爲 「0 N」
莫非任何人都請解釋我這個功能的工作原理?
由於
哦,謝謝。 我不知道拉姆達這麼多,我可以編寫代碼以不同的方式,像這樣: 彬:: [INT] - >詮釋 斌[] = 0 斌(X:XS)=與foldl( 2 * xs + x) 它不是做同樣的事情嗎?但我得到一個錯誤... – Blnpwr
你得到一個錯誤,因爲你需要給foldl一個起始值,也是一個函數。查找foldl的定義。 Foldl的basecase已經與[]匹配,因此添加的[]模式匹配應該有所作爲。第二行沒有任何意義,但不應編譯。你不要給它一個函數,基礎或列表。 – xZel
怎麼樣:bin :: [Int] - > Int bin(x:xs)=(foldl(*)2(xs + x)) 仍然出現錯誤.. – Blnpwr