我想刷新我的線性代數技巧,也在學習哈斯克爾和思想......爲什麼不通過另一個做一個學習! (二鳥一石)哈斯克爾陣列減法
-- Vector
a = [1,0,0]
b = [2,0,4]
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
我很想了解:
(x:xs)
和(y:ys)
:這些只是意味着在所有的元素,在b的所有元素?= (x-y)
:應該計算a[0] - b[0] = c[0]
,對不對?
我想刷新我的線性代數技巧,也在學習哈斯克爾和思想......爲什麼不通過另一個做一個學習! (二鳥一石)哈斯克爾陣列減法
-- Vector
a = [1,0,0]
b = [2,0,4]
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
我很想了解:
(x:xs)
和(y:ys)
:這些只是意味着在所有的元素,在b的所有元素?
= (x-y)
:應該計算a[0] - b[0] = c[0]
,對不對?
沒有與此代碼的問題:
subTwoLists :: Num a => [a] -> [a] -> [a]
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
你沒有處理基本情況。在遞歸中,你總是必須 處理基本情況。像這樣的東西應該工作:
subTwoLists :: Num a => [a] -> [a] -> [a]
subTwoLists [] _ = []
subTwoLists _ [] = []
subTwoLists (x:xs) (y:ys) = (x-y) : (subTwoLists xs ys)
難道這些僅僅是指在一個所有元素和B中的所有元素?
是。但是你爲什麼不用ghci自己嘗試一下呢?
(x-y):應該計算a [0] - b [0] = c [0]對嗎?
是。
此外,請注意,您使用的是Lists
,而不是數組。
可憐的鳥......不是素食主義者的帖子... –