Куча говна / Говнокод #11700 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
ignore(MainForm.g.Items.Add
			(
				if(! $['A'..'Z'].Concat($['а'..'я']).Concat($['А'..'Я']).Concat($['a'..'z']).Contains(tok[0])) $"#$code" else tok
			));

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

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

    • Вот так конечно же:
      if (!"ABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyz".Contains(tok[0]))
      Ответить
      • Я про говнокод из топика:
        Таки от Concat можно избавится.
        Тем более глупо создавать 4 списка букв каждый раз при вызове этой функции при каждой итерации цикла.
        Тем более глупо делать операцию О(n) поиска элемента в каждом списке, вместо О(1) обычного сравнения диапазонов.
        Ответить
      • Кстати, некоторые считают, что так и нужно писать. Это кросплатформенно. В некоторх языках буквы не идут подряд. Например в русском языке unicode или в cp866:
        http://ideone.com/9V3Ak
        import Char
        main = print $ map ord ['А', 'Я', 'Ё', 'а', 'я', 'ё']
        [1040,1071,1025,1072,1103,1105]
        Ответить
        • Ну вообще охренеть... Я ещё и ошибку нашел в коде этого говнокода... Мде.
          Ответить
  • Похоже это уже привычка. Ты уже не имеешь права постить обычные говнокоды. Их сразу минусуют. Тебе можно постить только говно из языков. Проклятье говна.
    Ответить
    • Теперь это модно.
      А ещё забавно, когда постят боян и плюсуют, а когда первый раз постили пару лет назад - минусовали. Говнокод, опередивший своё время!
      Ответить
  • Сегодня пробовал проектировать на ADT в Nemerle иерархию серьёзного хелоуворлда. Понял, что кроме Хаскеля это у меня нигде не получается (и то я там серьёзные хеловорлды ещё не пробовал). В итоге получилась иерархия с обычным ООП. Или ADT вообще говно, или ADT конкретно в Nemerle говно или мой мозг говно зашкварен ООП. Что посоветуете?
    Ответить
    • А ещё идея вывода конкретных типов в Немерле и только для локальных функций (не как в Хаскеле) - не менее унылое говно. А в скале абстрактные общие выводит? Или тоже конкретные?
      Ответить
      • Решил прятать ADT внутрь ООП классов, как низкоуровневое говно. Подругому и не знаю как сделать
        Ответить
        • Без сорцов тебе вряд ли кто-то что-то может подсказать...
          Наследование, кстати, вообще многое усложняет.
          Ответить
          • >Наследование, кстати, вообще многое усложняет.
            Что например, кроме того, что с ним больше кода?
            Ответить
          • ADT Nemerle - этакие taget unions. То есть структура с открытыми данными. Антиинкапсюляционно. Не знаю как сделать конструктора приватными, чтобы не творили с ними непотребство.
            Ответить
            • В хаскеле делалось тупо - не экспортировать конструктора за пределы модуля.
              Ответить
                • Даже вот так написать не могу:
                  variant ololo
                  	|T
                  		a:string
                  	|T1
                  		b:int
                  	public f():bool
                  		def g(T(a))
                  			true
                  		def g(T1(b))
                  			false
                  		g(this)

                  А хочу так:

                  variant ololo
                  	|T
                  		a:string
                  	|T1
                  		b:int
                  def f(T(a))
                  	true
                  def f(T1(b))
                  	false
                  А скала умеет последний вариант записи?
                  Паттерн-матчинг не предлагать.
                  Ответить
                  • Scala не умеет паттерн-матчинг в определении функций. Нужны языки, в которых можно определять функции в несколько клозов, а это в основном семейство ML и Erlang
                    Ответить
                    • >семейство ML
                      Помоему среди них есть один выродок - F#
                      Он вроде так не умеет
                      Ответить
            • Зачем делать конструкторы приватными? Вся суть как раз в том, чтобы конструирование объекта выглядело в точности так же, как сопоставление с образцом.
              Если очень хочется инкапсуляции - в Scala есть экстракторы, некий view, позволяющий осуществлять сопоставление с образцом, сохранив инкапсуляцию. Вот тебе пример: http://ideone.com/2xA5xW
              Ответить
              • >в Scala есть экстракторы, некий view, позволяющий осуществлять сопоставление с образцом, сохранив инкапсуляцию
                Даже в хаскеле ж такого нет? Штука хорошая
                Ответить
                • Хорошая, в haskell нет. Особенно удобно использовать их в regex: значение каждой группы можно привязать к переменной одной строкой.
                  Ответить
                  • А в хаскеле или скале с атд как то так можно?
                    variant T
                    	| T1
                    	| T2
                    
                    variant G : T
                    	| T3

                    То есть добавлять конструктора
                    Ответить
                    • В Scala это называется case-классы у них обычно общий абстрактный родитель. Наследников можно добавлять где угодно (наследуйся от базы и вперёд), но только если базовый класс не помечен как sealed - в этом случае наследников можно объявлять только в том же исходном файле.
                      Специального синтаксиса с пайпами там нет, всё через наследование.

                      В Haskell тоже нельзя добавлять.
                      Ответить
  • Как можно жить в языке в котором этого по умолчанию нет и выглядит композиция (.) и id как:
    module Utils
    public compose[FD,GS,GD](f:GD->FD, g:GS->GD):GS->FD
    			x => f(g(x))
    		public id[T](x:T):T
    			x

    Nemerle к вашим услугам
    Скала что может этому противопоставить?
    Ответить

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

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

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


    8