我寫了下面的代碼,它應該取值列表並只打印values > average
,將它們修改爲val - avg
。 例如printModVal [9,0,6]
應打印4 1
,每行一個元素,使用System.IO
print
函數。Haskell,用地圖打印修改後的列表值
import Data.List
import System.IO
printModVal :: [Float] -> IO()
printModVal xs = ???
where
average = (foldr (+) 0 xs)/genericLength xs
--use map here and print the values > average as value-average
modVal :: Float -> Float -> Float
modVal x y = x - y
mapVal :: (a->b) -> [a] -> [b]
mapVal f [] = []
mapVal f (x:xs) = f x : mapVal f xs
我想知道如何,在這一點,我怎樣才能使用mapVal
(與modVal
作爲映射函數)的函數printModVal
內,爲了打印值> 0(一旦被改性映射功能)。 謝謝。
交換'modVal'的參數。然後它可以用作'(modVal average)'而不是'(\ x - > modVal x average)'。 –