- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
import Control.Applicative
import Data.List
isSimple n | n > 0 = not $ or $ map (\n1 -> n `rem` n1 == 0) [2..n-1]
isNaturalAndSimple n = n > 0 && isSimple n
generateSource b e = map (flip replicate $ [b..e]) [2..]
splitAll = groupBy $ \_ _->False
splitedNumberRangesToNumberSequence l = foldl (liftA2 (++)) (head l) (tail l)
toNumberSequences = map $ splitedNumberRangesToNumberSequence . map splitAll
onlySimple = map $ filter $ isNaturalAndSimple . sum
main = print $ take 4 $ onlySimple $ toNumberSequences $ generateSource 2 3
Оптимизатор Хаскель не умеет определять unreachable code. В результате в этом примере используемая память бесконечно растет из-за того что компилятор держит голову списка, а вот если --print a закомментировать, то все как и говорил борманд: Не растет, тк сборщик мусора его собирает. ПС: Запускать на всяких онлайнкомпиляторах бесполезно, тк цил бесконечный
> foldl (liftA2 (++)) (head l) (tail l)
ну ну
Стало так. Больше говна не вижу.
tail $ iterate ([b..e]:) []
> splitAll = groupBy $ \_ _->False
map (:[])
для затравки
Этот код портит результат программы
Второй я даже понял и он работает.
ну не суть: tail -> drop 2, недоглядел
> Второй я даже понял и он работает.
а предлагаешь людям свой "читабельный" код, не стыдно ли?
по сабжу: (:[]) это return для списка / \x -> [x]
btw: or $ map .. это any, и в смысл кода целиком не вникал, очень вероятно, что можно переписать)
Гумно ничего само не пишет.
Оно даже бред берет чужой.