1. Список говнокодов пользователя HaskellGovno

    Всего: 56

  2. Куча / Говнокод #13423

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    wrs(S):-put_char('\"'), wrsi(S).
    wrsi([C|S]):-put_char(C), wrsi(S).
    wrsi([]):-put_char('\"').
     
    wrl(S):-put_char('['), wrli(S), put_char(']').
    wrli([C|[O|S]]):-wrs(C), put_char(','), wrli([O|S]).
    wrli([C]):-wrs(C).
     
    :- wrl(["dog", "cat", "canary"]).

    Курю правильные примеры кода на прологе. PrologGovno ждите во всех кинотеатрах страны.
    http://ideone.com/L4vIKs
    Почему вместо того чтобы пользоваться стандартной функцией вывода списков или строк - автор рекомендует это? Я код правда поправил, а то хаскельных скобок (я уже без них не могу) не было и запятую в конце списка выдавало.

    HaskellGovno, 15 Июля 2013

    Комментарии (14)
  3. Haskell / Говнокод #12738

    −95

    1. 1
    2. 2
    instance Show (a -> b)
    main = print (*)

    http://liveworkspace.org/code/17QAgf$23
    stderr:
    Stack space overflow: current size 8388608 bytes.
    Use `+RTS -Ksize -RTS' to increase it.

    Возможно это из-за того, что нет реализации show и я написать вменяемую не смогу. Как заставить Haskell сгенерировать для меня show?

    Хочется типа такого:

    {-# LANGUAGE OverlappingInstances, FlexibleInstances, UndecidableInstances, StandaloneDeriving, DeriveFunctor #-}
    deriving instance Show (a -> b)
    main = print (*)

    http://liveworkspace.org/code/17QAgf$21
    http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/deriving.html
    http://www.haskell.org/haskellwiki/GHC/Stand-alone_deriving_declarations

    HaskellGovno, 13 Марта 2013

    Комментарии (14)
  4. Куча / Говнокод #12622

    +124

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 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, 20 Февраля 2013

    Комментарии (14)
  5. Куча / Говнокод #12621

    +118

    1. 1
    2. 2
    fib = 0 : 1 : zipWith (+) fib (tail fib)
    main = print $ take 700 fib

    HaskellGovno, 20 Февраля 2013

    Комментарии (4)
  6. Куча / Говнокод #12620

    +124

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    import Control.Monad
    import Control.Arrow
    import Data.List
    
    solve' :: [String] -> [[String]]
    solve' = nub . filter (
                and . uncurry (
                    zipWith (
                        (.head) . (==) . last
                    )
                ) . (id &&& tail)
             ) . uncurry ($) . (
                last . (((
                    map (
                        last . fst &&& uncurry (++) . (init . fst &&& snd)
                    ) . tail . uncurry (zipWith (,)) . (inits &&& tails)
                ) >=> (uncurry map) . 
                    ((:) *** solve')
                ):
                ) . (uncurry takeWhile) . (
                        const . null &&& const [const [[]]]
                    ) &&& id
             )
    
    main = print $ solve' ["123","321","123"]

    HaskellGovno, 20 Февраля 2013

    Комментарии (24)
  7. Куча / Говнокод #12075

    +119

    1. 1
    2. 2
    3. 3
    4. 4
    data Fuuu = Fuuu
    instance Eq Fuuu
     
    main = print $ if Fuuu == Fuuu then "I dosen't seen this" else "and this"

    Вот за что мне нравится сверх надежный высокоуровневый хаскель, так за то, что если забыл переопределить какой-то метод или оператор из класа типов (в нормальных языках это интерфейс или один из базовых класов) стандартной библиотеки языка или неподходящим образом от него отнаследовался, то мы получаем надежное поведение:
    http://ideone.com/6faPct
    результат: Ошибка выполнения время: 0.01s память: 3580 kB сигнал: -1
    ввод: нет
    вывод: нет
    stderr:
    prog: <<loop>>

    HaskellGovno, 07 Ноября 2012

    Комментарии (19)
  8. Куча / Говнокод #12074

    +126

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    infixr 6 `then'`
    then' True = fst
    then' False = snd
    if' = id
    else' suc fail = (suc, fail)
    main = do
        print $ if' (1<5) `then'` "true" `else'` "false"
        print $ if' False `then'` "true" `else'` "false"

    bormand
    У ифа особый синтаксис. Как ты его реализуешь?
    Challenge accepted:
    Сначала был тред
    http://govnokod.ru/12068#comment159236
    а потом родилось говно:
    http://ideone.com/rOKDPP
    Реализовал if. За правильными приоритетами операций и ассоциативностью не следил.

    HaskellGovno, 07 Ноября 2012

    Комментарии (23)
  9. C# / Говнокод #11989

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public sealed class CustomProvider
    {
         private readonly object _SyncRoot = new object();
     
        public CustomProvider()
        {
                 lock(_SyncRoot)
                 {

    А вообще, если честно, создание экземпляра класса предка (object) всех классов, чтобы произвести захват критической секции - это так печально. Одному мне эта техника кажется удобной, но странной? Нет чтобы создать класс CriticalSection или что-то такое. А они создают объект совсем не связанный с синхронизацией. Не самодокументированно и тут явно какая-то переголова скрывается при создании объекта, по затратам памяти и системных ресурсов, что в каждый объект на уровне имплементации языка приходится по критической секции добавлять.
    Кстати, там как реализована эта критическая секция? Хендл этой критической секции фактически системный ресурс и для него по идеи нужно вызывать Dispose, но это не происходит. Тогда почему этих системных хендлов критической секции хватает, хотя ситуация без Dispose похожа на утечку системных ресурсов?

    Если кто подумал про lock(this), то это плохо с точки зрения проектирования класса и его последующего использования, поэтому идея с private _SyncRoot - это правильно. Ведь lock(this) (под this в последнем случае имеется данный экземпляр класса), может использоваться и снаружи класса, что может быть пересинхронизацией.

    HaskellGovno, 24 Октября 2012

    Комментарии (40)
  10. Куча / Говнокод #11978

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    main = do
            print [1 .. 9]
            print [1, 3 .. 9]
            print [1, 3 .. 10]
            print [26.0, 26.2 .. 27.0]
            print [25.5..30.0]
            print [25, 25 .. 25]

    В хаскеле сломан генератор списков. :(
    http://ideone.com/AvBSuz

    HaskellGovno, 22 Октября 2012

    Комментарии (140)
  11. Куча / Говнокод #11968

    +128

    1. 1
    f = expr `catches` [Handler (\ (ex :: ArithException) -> handleArith ex), Handler (\ (ex :: IOException)    -> handleIO    ex)]

    Собственно это пример как в хаскеле перехватывать исключения из одного выражения expr.
    Выглядит конечно отстойно. Очень многословно и судя по всему метода проще нет. И понятное дело, в чистых ленивых функциях это не работает. Ловить исключения можно только в грязных IO-функциях, тк сигнатура такова: catches :: IO a -> [Handler a] -> IO a

    HaskellGovno, 21 Октября 2012

    Комментарии (43)