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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.