Хламидомонада / Говнокод #20068 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
data TTree k v =
  TNode {
    _key :: !k
  , _val :: !(Maybe v)
  , _eq :: !(TTree k v)
  , _left :: !(TTree k v)
  , _right :: !(TTree k v)
  , _height :: !Int
  }
  | TTNil
  deriving (Show, Generic)
instance (Binary k, Binary v) => Binary (TTree k v)

insertWith' :: (Ord k)
            => (v -> v -> v) -- ^ Conflict resolution function
            -> [k]           -- ^ Key
            -> Int           -- ^ Length of the key
            -> v             -- ^ Value
            -> TTree k v     -- ^ Tree
            -> TTree k v
insertWith' f k1@(k:kt) h v t =
  case t of
    TTNil ->
      insertWith' f k1 h v $ TNode {
          _key = k
        , _eq = TTNil
        , _left = TTNil
        , _right = TTNil
        , _val = Nothing
        , _height = h
        }
    node@TNode{_key=k0, _height=h0, _val=v0, _eq=eq0, _left=left0, _right=right0} ->
      case compare k0 k of
        EQ | null kt ->
               node {
                 _val = Just $ maybe v (flip f $ v) v0
               }
           | True ->
               node {
                 _eq = insertWith' f kt (h-1) v eq0
               , _height = max h h0
               }
        GT ->
           node {
             _left = insertWith' f k1 h v left0
           , _height = max h h0
           }
        LT ->
           node {
             _right = insertWith' f k1 h v right0
           , _height = max h h0
           }
{-# SPECIALIZE insertWith' :: (v -> v -> v) 
                           -> [Char] 
                           -> Int
                           -> v 
                           -> TTree Char v
                           -> TTree Char v
  #-}

а почему бы не использовать несбалансированное тернанрое дерево для индекса
вроде ничего стра
Out of memory: Kill process 2987 (govno) score 265 or sacrifice child

Запостил: CHayT CHayT, (Updated )

Комментарии (18) RSS

  • Так не хватило памяти из-за того, что каждый нод жрёт слишком много места, или же проблема именно в том, что дерево несбалансированное, и каждая вставка реаллицирует слишком много нодов?
    Ответить
  • на хаскеле говнокодов почти не пишут. видно по кол-ву их на сайте 7
    Ответить
    • > на хаскеле говнокодов почти не пишут. видно по кол-ву их на сайте 7
      на хаскеле почти не пишут. видно по кол-ву их на сайте 7
      FTFY
      Ответить
  • не завидую тому кто будет поддерживать этот код впоследсвии, ведь k и v f t совсем не читабельные односимвольные хрени, и если там весь код такой то это трэш и угар
    Ответить
      • вообще ниразу ))) у мня в основном шарп, даже если это норма для хаскеля, это не отменяет того факта что читабельность, а как следствие поддержка такого кода снижена
        Ответить
      • В том то все и дело, что "универсальный математический язык" - универсальное говно, с какой стороны ни посмотри. Куча бесполезных, дублирующихся правил, нихера не понятные закорючки, которые даже специалисты не знают как читать. Самый большой процент ошибок при наборе - в математических формулах, просто даже при механическом копировании.
        Но человек, который с огромным трудом осилил это говно на 10% будет его защищать потому что это труд всей его жизни, а если этот труд вдруг окажется ненужным, то это ж депрессия и т.д.
        Ответить
        • Любой универсальный язык на поверку оказывается говном.
          Ответить
            • > помойка истории
              > (( ))) ()()()()()))(()))
              ну, если сесть в центр мусорного полигона и объявить всё пространство за его забором свалкой истории -- да, возможно
              Ответить
              • А что были сомнения что осиливший 10% клинописи будет вопить про то как эта клинопись неговно? У меня не было.
                Ответить
        • посмотри историю изменений вики странички и сам узнаешь, что как маленький
          Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8