LINUX.ORG.RU

Haskell, типы, туплю.


0

0
Ввожу в GHCi:
Prelude> :set +t
Prelude> let {sum5 a = foldl ((*).fromEnum) 1 (take 5 a)}
sum5 :: [Int] -> Int

Собственное, вопрос: фигли
[Int] -> Int?
Почему не
Enum a => [a] -> Int?

При попытке скормит туда список Char, ес-но, посылает.
Правда это не sum5, a product5, но это не важно.
ratatosk
() автор топика
Ответ на: комментарий от imp
1 - да, но
fromEnum :: Enum a => a -> Int

Понятно, что перемножаю я инты, но вот почему список-то из интов должен быть?
ratatosk
() автор топика
Ответ на: комментарий от ratatosk
mult :: (Enum a, Enum b) => a -> b -> Int
mult a b = (fromEnum a) * (fromEnum b)

sum5 :: Enum b => [b] -> Int
sum5 a | length a < 5 = (-1)
| otherwise = foldl mult 1 (take 5 a)
ratatosk
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.