- 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
HaskellGovno 21.02.2013 10:29 # 0
Оптимизатор Хаскель не умеет определять unreachable code. В результате в этом примере используемая память бесконечно растет из-за того что компилятор держит голову списка, а вот если --print a закомментировать, то все как и говорил борманд: Не растет, тк сборщик мусора его собирает. ПС: Запускать на всяких онлайнкомпиляторах бесполезно, тк цил бесконечный
HaskellGovno 21.02.2013 13:39 # 0
roman-kashitsyn 21.02.2013 14:04 # +1
> foldl (liftA2 (++)) (head l) (tail l)
ну ну
HaskellGovno 21.02.2013 15:06 # 0
roman-kashitsyn 21.02.2013 15:20 # +2
HaskellGovno 21.02.2013 18:12 # +1
Стало так. Больше говна не вижу.
guest 22.02.2013 03:16 # +3
tail $ iterate ([b..e]:) []
> splitAll = groupBy $ \_ _->False
map (:[])
для затравки
HaskellGovno 22.02.2013 06:18 # 0
Этот код портит результат программы
Второй я даже понял и он работает.
guest 22.02.2013 12:34 # +1
ну не суть: tail -> drop 2, недоглядел
> Второй я даже понял и он работает.
а предлагаешь людям свой "читабельный" код, не стыдно ли?
по сабжу: (:[]) это return для списка / \x -> [x]
btw: or $ map .. это any, и в смысл кода целиком не вникал, очень вероятно, что можно переписать)
HaskellGovno 22.02.2013 07:02 # 0
HaskellGovno 22.02.2013 07:13 # 0
Yuuri 22.02.2013 12:00 # +1
guest 22.02.2013 13:53 # +3
3.14159265 22.02.2013 14:05 # +5
Гумно ничего само не пишет.
Оно даже бред берет чужой.