function x i xs = let l = i `mod` length xs in take l xs ++ x : drop (l + 1) xs
誰能向我解釋什麼讓在這裏做的,它代表什麼,什麼在這裏做的,它代表什麼,什麼爲l哈斯克爾 - 代碼解釋
function x i xs = let l = i `mod` length xs in take l xs ++ x : drop (l + 1) xs
誰能向我解釋什麼讓在這裏做的,它代表什麼,什麼在這裏做的,它代表什麼,什麼爲l哈斯克爾 - 代碼解釋
定義一個函數(缺乏想像力)稱爲function
。它需要3個參數,x
,i
和xs
。值得注意的類型簽名
function :: Int -> a -> [a] -> [a]
的函數體是對=
的權利。讓我們再次縮進它的清晰度
let l = i `mod` length xs
in take l xs ++ x : drop (l + 1) xs
所以l
是i
與xs
長度改裝,並且我們從xs
l
元素和追加,爲x : drop (l+1) xs
。這將從xs
下降l + 1
元素,並將x
放在前面。
現在,而不是告訴你什麼是對,這裏有一些樣品的輸入,其結果
function 2 2 [1, 2, 3]
> [1, 2, 2]
function 0 (-1) [3, 3, 3]
> [-1, 3, 3]
因爲這看起來像功課,我會讓你找出模式。
這是非常基本的Haskell,如果這是一個班級,我強烈建議您閱讀Learn You A Haskell,這對學習基礎很有用。
可以或許讀更好的時候,呈現一些空白的代碼添加:
function x i xs = let l = i `mod` length xs
in take l xs ++ x : drop (l + 1) xs
let
綁定變量l
表達式i `mod` length xs
。整個表達式的值就是
take l xs ++ x : drop (l + 1) xs
這裏地方使用值l
上面給出。在Haskell中有另一種表達方式:
function x i xs = take l xs ++ x : drop (l + 1) xs
where l = i `mod` length xs
這種方式通常可以更自然地閱讀。
ty,告訴我這段代碼做什麼: x:drop(l + 1)xs – user3088738
ty,告訴我這部分代碼的功能是什麼:x:drop(l + 1)xs – user3088738
@ user3088738他是答案的一部分,它說:「這會使x + 1'elemtns從xs中丟失並放入'x'在前面,這就是它的作用:) – jozefg
和你知道這裏: insert2D :: a - > Int - > Int - > [[a]] - > [[a]]/n insertD xij xss = function r'j xss where/n r = xss !! (j'mod' length xss)/ n r'= function x i r/n xss是什麼! 我寫了/ n爲新行 – user3088738