- 1
- 2
- 3
- 4
data Fuuu = Fuuu
instance Eq Fuuu
main = print $ if Fuuu == Fuuu then "I dosen't seen this" else "and this"
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+119
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>>
+126
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. За правильными приоритетами операций и ассоциативностью не следил.
+129
-- Подготовка
(.-) :: ot -> (ot -> rt) -> rt
object .- method = method object
to_string () self = show self
my_array = [1..]
-- ООП в действии
main = putStrLn( my_array.-take(10).-drop(5).-to_string() )
Хаскелл и ООП.
+142
http://s9.postimage.org/7t1dai0en/born_to_program.png
Born to program :(
+136
<!--[if lte IE 6]>
Ваш браузер говно. Качайте новый...
<![endif]-->
Верстальщику респект...
+122
data IdPState a r = IdPEnd r | IdPNeedInput | IdPHaveInput a
{-# INLINE_STREAM idP #-}
idP :: (Monad m) => Stream l a a r m r
idP = Stream next IdPNeedInput where
{-# INLINE_INNER next #-}
next (IdPEnd r) = Done r
next IdPNeedInput = NeedInput IdPHaveInput IdPEnd
next (IdPHaveInput a) = HaveOutput IdPNeedInput (return ()) a
{-# INLINE_STREAM pipe #-}
pipe :: Monad m => Stream l a b r0 m r1 -> Stream Void b c r1 m r2 -> Stream l a c r0 m r2
pipe (Stream nextL sL) (Stream nextR sR) = Stream next (Right (return (), sL, Right sR)) where
{-# INLINE_INNER next #-}
next (Left r) = Done r
next (Right (final, sL, Right sR)) = case nextR sR of
Skip sR' -> Skip (Right (final, sL, Right sR'))
HaveOutput sR' c o -> HaveOutput (Right (final, sL, Right sR')) (c >> final) o
NeedInput p c -> Skip (Right (final, sL, Left (p, c)))
Done r -> PipeM (final >> return (Left r))
PipeM ms -> PipeM (liftM (Right . (final, sL,) . Right) ms)
Leftover _ i -> absurd i
next (Right (final, sL, Left (p, c))) = case nextL sL of
Skip sL' -> Skip (Right (final, sL', Left (p, c)))
HaveOutput sL' final' o -> Skip (Right (final', sL', Right (p o)))
NeedInput pL cL -> NeedInput (Right . (final,, Left (p, c)) . pL) (Right . (final,, Left (p, c)) . cL)
Done r -> Skip (Right (return (), sL, Right (c r)))
PipeM ms -> PipeM (liftM (Right . (final,, Left (p, c))) ms)
Leftover sL' i -> Leftover (Right (final, sL', Left (p, c))) i
{-# INLINE_STREAM purePipe #-}
purePipe :: (forall m . Monad m => Stream l a b r0 m r1) -> (forall m . Monad m => Stream Void b c r1 m r2) -> (forall m . Monad m => Stream l a c r0 m r2)
purePipe (Stream nextL sL) (Stream nextR sR) = Stream next (sL, Right sR) where
{-# INLINE_INNER next #-}
next (sL, Right sR) = case nextR sR of
Skip sR' -> Skip (sL, Right sR')
HaveOutput sR' _ o -> HaveOutput (sL, Right sR') (return ()) o
NeedInput p c -> Skip (sL, Left (p, c))
Done r -> Done r
PipeM ms -> Skip (sL, Right (runIdentity ms))
Leftover _ i -> absurd i
next (sL, Left (p, c)) = case nextL sL of
Skip sL' -> Skip (sL', Left (p, c))
HaveOutput sL' _ o -> Skip (sL', Right (p o))
NeedInput pL cL -> NeedInput ((, Left (p, c)) . pL) ((, Left (p, c)) . cL)
Done r -> Skip (sL, Right (c r))
PipeM ms -> Skip (runIdentity ms, Left (p, c))
Leftover sL' i -> Leftover (sL', Left (p, c)) i
+100
<form action="/cgi-bin/repare.mpl" method="post" enctype="multipart/form-data" class="frm">
<input type="hidden" name="sql" value="UPDATE parcels p, parcels_doc d SET p.state = 'transporter_store' WHERE d.doctype = 'confirm.L' AND d.docid IN ($SORD) AND p.good IN ($ter) AND d.docitem = p.good AND p.state <> 'transporter_store' AND d.parcel = p.id">
<input type="submit" class="butt" name="main_ok" value="Исправить">
</form>
Нашли тут в боевом проекте шедевральную SQL Injection "by design".
+129
public Match(source:SourceLexemes, namedLinkDictionary:NamedLinkDictionary, settings:MatchSettings):MatchResult
def endMatchingBlockLexemesByType = settings._endMatchingBlockLexemesByType;
def endMatchingBlockLexemesByValue = settings._endMatchingBlockLexemesByValue;
assert([_beginOfMatchBlock, _endOfMatchBlock].ForAll(excludedItem => !endMatchingBlockLexemesByValue.Contains(excludedItem)));
def matchLexeme(amountOfEntryBlock=0, matchedLexemes=[], sourceTail=source)
|(0, _::_, _) => Some(matchedLexemes, sourceTail)
|(_, _, lexeme_::_) when endMatchingBlockLexemesByType.Contains(lexeme_._type) => None()
|(_, _, lexeme_::lexemes_) =>
match(lexeme_._value, amountOfEntryBlock)
|(value_, _) when endMatchingBlockLexemesByValue.Contains(value_) => None()
|(_beginOfMatchBlock, _) => matchLexeme(amountOfEntryBlock+1, lexeme_::matchedLexemes, lexemes_)
|(_endOfMatchBlock, 0) => None()
|(_endOfMatchBlock, _) => matchLexeme(amountOfEntryBlock-1, lexeme_::matchedLexemes, lexemes_)
|(_, 0) => None()
|(_, _) => matchLexeme(amountOfEntryBlock, lexeme_::matchedLexemes, lexemes_)
|_ => None()
|_ => None()
match(matchLexeme())
|None => MatchResult.Failure(source, namedLinkDictionary)
|Some((matchedLexemes_, unmatchedLexemesTail_)) => MatchResult.Success(unmatchedLexemesTail_, updateNamedLinkDictionary(matchedLexemes_, namedLinkDictionary))
Вчера заглянул в свой код.
Есть один язык, так вот в нем паттерн-матчинг задается на уровне сигнатур функций.
В связи с тем, что я каждую ночь читал книгу по кулХацкелу, то то что там было написано - вьелось мне в подкоррку и я этого даже не заметил.
По ночам когда читаешь что-то, оно проникает в незащищенное подсознание. Я даже не ожидал, что напишу такой код. Но я его написал и только опосля понял, что с кодом что-то не так.
Беда пришла оттуда, откуда её не ждали.
Ещё я больше не могу без таких функций, как id или ($) или (.) или стрелочка\рыбка. Меня все это конечно раздражает... Мне кажется, что меня держут в клетке и не дают пользоваться правильными функциями.
Я всегда считал, что зашквар и профессиональная деформация может быть только от крестов.
Похоже я очень сильно ошибался и поплатился за это.
Что посоветуете?
+124
Сайт ЦИК Украины, нынешние выборы народных депутатов.
http://cvk.gov.ua/vnd2012/wp300pt001f01=900.html
Говно везде - html, css, дизайн, юзабилити.
Для начала цитаты из html-кода страницы. В шапке мы видим
заголовок "XHTML 1.0 Transitional", а в коде - конструкции
в стиле 90-х годов, например:
<IMG src="img2012/bar-blue1.jpg" WIDTH=" 1" HEIGHT=20>
<table class=t1 cellspacing=0><tr>
<td width="50%" class="td2"><font class="f3"> © WWW ІАС "Вибори
народних депутатів України"
<td align="right" class="td2">
</table>
<td class=td10 align=center><font color="maroon">2</font>
<td class=td2><A class=a1 href="wp302pt001f01=900pf7171=52.html">
політична партія Всеукраїнське об’єднання "Батьківщина"</A></td>
В стилях тоже все в порядке, товарищи проявили
отличное знание спецификаций:
... height=14px; ...
... background-color: 666699; ...
... text-decoration: non ...
... background-color : none; ...
... valign: center; ...
Про отсутствие смысла я даже не говорю.
Вот, например, такой перл:
FONT.F1 {color: black; font-family:Arial;font-size: 14pt}
Сайт ЦИК Украины. Не сомневаюсь, что ООО "НПП "Медирент"" и ООО "НПП "Проком" получили за свою работу сотни нефти.
P.S. Плохо, что в самом говнокоде нельзя применять форматирование bb-тегами, для кучи было бы полезно.
+128
[Record] variant ItemPatternMatched: PatternMatchedBase, IPatternMatched
_matchByLexemeValue:option[string]
public Match(source:SourceLexemes, namedLinkDictionary:NamedLinkDictionary):MatchResult
match(source)
|[] => MatchResult.EndOfLexemes(source, namedLinkDictionary)
|lexeme_::lexemes_=> def updatedNamedLinkDictionary = updateNamedLinkDictionary(lexeme_::[], namedLinkDictionary);
def failure = MatchResult.Failure(source, namedLinkDictionary);
def success = MatchResult.Success(lexemes_, updatedNamedLinkDictionary);
match(_matchByLexemeValue)
|None | Some(lexemeValue_) when (lexemeValue_==lexeme_._value) =>
match(this, lexeme_._type)
|(Symbol, SourceLexeme.Type.Symbol) | (Identificator, SourceLexeme.Type.Identificator) | (Number, SourceLexeme.Type.Number) =>
success
|_ =>
failure
|_ =>
failure
|Symbol
|Identificator
|Number
Начальник, посмотрев на код, сказал, что NemerleGovno. Я не знаю, что ему ответить?