私はHaskellの初心者です。数の無限リストが2つA
あり、 「s」と「s」のシーケンスを含むB
別の無限リストを作成したいとします。ここで、とは、ループごとに2ずつ増加します。これを行うための最も賢い方法は何ですか?C
x+y
x-y
x <- A
y <- B
C
質問する
420 次
4 に答える
7
2要素リストの無限リストを作成し、それらを連結します。
concat [[x+y, x-y] | (x, y) <- zip listA listB]
于 2012-05-02T17:23:51.443 に答える
4
定義上、デバッグするには賢すぎるので、おそらく最も賢い方法は望まないでしょう:-)
明らかな方法は、次のように、無限のストリームを一緒に圧縮することです。
zipWith k as bs
where
k a b = (a + b, a - b)
于 2012-05-02T17:23:28.717 に答える
1
無限のリストの場合のみ
mkList (x:xs) (y:ys) = x+y : x-y : mkList xs ys
有限リストもサポートするには、ベースケースを追加する必要があります
mkList _ _ = []
于 2012-05-03T14:56:31.023 に答える
0
f xs = concat . zipWith go xs where
go x y = map (($y).($x)) [(+),(-)]
于 2012-05-03T08:41:50.820 に答える