--Standered Diviation
module SD where
diviation:: IO()
diviation =
do
putStrLn ("Enter Students Marks")
marks <- getLine
let m = (read marks)::[Float]
let x = sum' m
let mean = (fromIntegral x)/(fromIntegral $ length)
let len = (read (length(m)))::Float
let divia = divi mean l
let std = map (^2) divia
let stdd = xx length(m-1) m
let final = map sqrt stdd
let tot = sum final
if(m==[])
then
putStrLn("empty List" ++ show(tot))
else do
putStrLn("The Standered Divation is" ++ (show(tot)))
sum' :: (Num a) => [a] -> a
sum' = foldl (+) 0
avg::Float->Float->Float
avg a b = (fromIntegral a)/(fromIntegral b)
divi::Float->[Float]->[Float]
divi a xs = [x-a | x <- xs]
xx::Float->[Float]->[Float]
xx a xs = [x/a|x<-xs]
이 프로그램의 문제점을 알아낼 수 없습니다. 너희들이이 프로그램에 문제가 저를 지적하시기 바랍니다 수있는이haskell programm (유형 오류)의 문제점
ERROR file:.\SD.hs:11 - Type error in application
*** Expression : read (length m)
*** Term : length m
*** Type : Int
과 같은 오류가 당신에게 감사 보여줍니다 * 일치하지 않습니다 : [샤아]
'Int'에'read'를 호출 할 수 없습니다. 이는'length'가 반환하는 것입니다. 'read'는 문자열을위한 것입니다. –
또한 'len'값을 실제로 사용하지 않습니다. 그래서 그냥 'let len = (read (length (m)) :: Float' –