2
我的函數vector1接受一個類型爲(Double,Double,Double)的元組,並且它應該將元組中的所有元素乘以-1,並返回一個帶有負雙精度元組的列表。代碼編譯,但無限循環。在元組列表中的列表理解haskell
vector1 (p,q,r)= let
y=(p,q,r)
y'=[(-1)*y | (y)<-y']
in y'
我的函數vector1接受一個類型爲(Double,Double,Double)的元組,並且它應該將元組中的所有元素乘以-1,並返回一個帶有負雙精度元組的列表。代碼編譯,但無限循環。在元組列表中的列表理解haskell
vector1 (p,q,r)= let
y=(p,q,r)
y'=[(-1)*y | (y)<-y']
in y'
它看起來像你試圖做y
,不y'
列表理解:
vector1 (p,q,r)= let
y=(p,q,r)
y'=[(-1)*x | x<-y]
in y'
但不會工作,因爲列表解析是列表。不同大小的元組完全是不同的類型。既然你已經拆包(p, q, r)
,你可以申請-
手動他們每個人(然後把它包在哪個原因的列表):
vector1 (p, q, r) = [(-p, -q, -r)]
如果你覺得自己定義爲map
三元:
map3 :: (a -> b) -> (a, a, a) -> (b, b, b)
map3 f (p, q, r) = (f p, f q, f r)
vector1 :: Num a => (a, a, a) -> [(a, a, a)]
vector1 = pure . map3 negate
這真的很有幫助,謝謝! – bubu
帶元組的列表?你能展示一個你想要的輸出的例子嗎? – Ryan
input(1,2,3)→output [( - 1,-2,-3)] – bubu
所以'vector1(p,q,r)= [(-p,-q,-r)]? – Ryan