2

とはどういうsquares xs = [x*x|x<-xs]意味ですか?

私が理解しているように[x*x|x<-[1,2,3]]

正確に言うと、 はどこsから来たのxsですか?

4

3 に答える 3

3

xssquares関数に渡されるリスト引数です。通常、sリストを示すために haskell の変数名の後に an が使用されます (つまり、名前を複数形にして引数の複数の値を示す)。

于 2013-10-04T13:54:38.043 に答える
1

Philip Walder によると、リストは頭と尾しかない奇妙な動物です。そして尻尾は頭と尻尾というようにヌルになるまで続きます。

たとえば、関数の場合:

squareRec :: [Integer] -> [Integer]
squareRec [] = []
squareRec (x:xs) = x*x : squareRec xs

ソリューションは次のように機能します。

squareRec[1,2,3]
= squareRec(1 : (2 : (3 : [])))
= 1*1 : squareRec(2 : (3 : []))
= 1*1 : (2*2 : squareRec(3 : []))
= 1*1 : (2*2 : (3*3 : squareRec []))
= 1*1 : (2*2 : (3*3 : []))
= 1 : (4 : (9 : []))

ここで、先頭はx(要素) であり、末尾はリストの残り (リスト) です。返されたリストはsquareRec関数に渡されますが、次のように定義された空のリストが取得されます。squareRec [] = []

そして、私たちはそれを知っています1:(4:(9:[])) = [1,4,9]

于 2013-10-04T16:16:06.777 に答える
0

xsは単なる変数 ( に渡される引数squares) です。2 番目の例では、 に置き換えxsました[1,2,3]

于 2013-10-04T13:54:03.950 に答える