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