- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
#include "xsmell.hpp"
#include <iostream>
TAG(html, NO_ATTRIBS);
TAG(head, NO_ATTRIBS);
TAG(title, NO_ATTRIBS);
TAG(body, NO_ATTRIBS);
TAG(p, NO_ATTRIBS);
TAG(a, ATTRIB(href));
TAG(img, ATTRIB(src), ATTRIB(alt));
int main()
{
using namespace xsmell;
document doc =
_
<html>_
<head>_
<title>"XSMELL demo"<!title>_
<!head>_
<body>_
<p>"Yesssssssssssssssss!"<!p>_
<img .src("chucknorris.png") .alt("sneezing eyes open")>_ <!img>_
<!body>_
<!html>
_;
std::cout << doc << '\n';
return 0;
}
And you no longer have to worry about generating malformed XML! After spending
hours fighting obscure C++ compiler errors, you'll be 100% certain that your
XML is correct.
Не нужен.
xвонь
(Y)
> сергей дроботенко
.
(Я гуглил)
которая не знает, что такое аж 2 канала на ТВ в 90-е - орт и ртр
я еще коклюшкина помню
минусуйте меня
> минусуйте меня.
Да это ж рецепт плюсов!
КАК ВЫ МОГЛИ ЗАБЫТЬ ПЕТРОСЯНА?!
http://www.youtube.com/watch?v=ISMh8w1dz3Y
http://www.youtube.com/watch?v=T5ksOZcTrww
Школьники! Давитесь от зависти.
Да. Все умрут.
петросян тогда в своей "смехопанораме" только и делал, что пи... говорил не по делу, вместо того, чтобы какие-никакие видеобояны демонстрировать,
вот квн тогда был огого какой торт, по сравнению с унылым аншлагом
а сейчас квн сам уныл
не пишет.
Коклюшкина никто
не ждёт.
Минусуйте меня за то, что я помню эту пародию.
)
Хоть бы там к примеру поволили бы или по батрутдилили бы на конец. Хотя... все же Петросян круче.
В List (Common, Clojure) можно строить литералы xml из s-выражений (например, в compile-time), написав несколько несложных макросов.
В теории это можно использовать везде, где нужен xml. Представление документов xml в виде лисповых s-выражений имеет для лисперов довольно много преимуществ (генерация кода, поддержка мощных редакторов вроде emacs).
Но с другой стороны дополнительная прослойка (все равно для валидации каждый раз конвертить) тоже не совсем "по бритве".
Ну, как-то же надо генерировать xml по данным. Либо использовать левый шаблонизатор, либо какой-то биндер s-выражений (тоже по сути шаблонизатор). В любом случае, использовать s-выражения для представления древовидных структур выглядит очень естественно и соответствует идеологии bottom-up.
Из всего кода компилятора бОльшую половину занимает парсилка XML (там можно не только XML, но и в скобочках переменные использовать). В итоге, обычный форыч работает естесственно, лучше литералов. Литералы большая часть использует не правильно, или не понимает, как, например и с регулярными выражениями. Вобщем, не нужно это.
Сильно сомневаюсь, что эта возможность принадлежит к числу "сложных" (emacs и idea вроде неплохо справляются, хотя хайлайтер emacs иногда серьёзно сбоит, особенно на больших файлах)
Идея, например, до сих пор не умеет компилять бОльшую часть валидного Scala-кода (даже без xml литералов).
В js2-mode есть какая-то подсветка и анализ XML, но если его использовать, то работать будет очень медленно. Честно сказать - я не пытался найти ошибки, но судя по тому, что автор бросил это дело...
Идея, кстати сказать, так же хреново подсвечивает / анализирует AS3. Но что с них взять, если Адобовский билдер тоже лажает.
а, нет, получается, если использовать в точности эту строчку
Я несколько раз брался написать раскраску для AS3, но изза E4X и метадаты, так ни разу до ума и не довел. Всякие яки-бизоны для этого использовать бессмысленно. И это еще и было придумано людьми, которые типа стандарты пишут... :/
А можете привести пример конструкции на Scala?
Я тогда попробую нечто подобное на Nemerle, если пойму как работает.
2)Второй на... я совсем не понял.
Третий на <span id="bottom"><b>...</b></span>.
3)Значение {contents} понятно. Оно "выводится". Там например, может быть следующие теги или текст. Я бы тут передавал contents рекурсивно функции самой себе для поиска следующих тегов.
Второй кейс проверяет, что имеем спан с id == "bottom" - наш кейс.
Третий - имеем <b>text</b> и аналогично привязываем текст внутри к переменной contents.
Перед match может стоять любое xml-выражение
Так это было бы в E4X. Но это хуже, чем записать по-человечески с обычными ифами или свитчем, и кода меньше сгенерируется, и работать будет лучше, и дебажить удобнее.
Если уж Крокфорд так пишет, то че уж мне стеснятся.
After spending hours fighting obscure C++ compiler errors, you'll be 100% certain
that your XML is correct.
P.S. Но на самом деле, конечно, ненужно.
правильно, вдруг это заразно
Как сделать так, чтобы этот код не скомпилировался?
http://ideone.com/Us6Ek
Хочу, чтобы типы Seg и Pos не совпадали.
(пере)прочитай gentle introduction что ли.
Но только там придется явно указывать имя конструктора. Тупо (4,5) не прокатит.
data Seg = Seg Int Int
data Pos = Pos Int Int
так это ж HaskellGovno ответил
http://ideone.com/vyDRD
http://ideone.com/Z1PAn
Оба метода работают. Но в чем разница?
Всё ли я сделал оптимально по количеству лишних символов?
Процитирую @guest: (пере)прочитай gentle introduction что ли.
http://www.haskell.org/tutorial/moretypes.html
Только я как то видел где-то
a - в данном случае шаблон и можно использовать там любой тип?
Можно ли в данном случае заменить type на data или newtype?
Как сделать так, чтобы за пределами модуля этот конструктор не был виден. Но в идеале конечно, хорошо бы, чтобы он не не был виден нигде, кроме как в коде
instance Num Natural where
...
или это хаскеляпроблема, которую не побороть?
Не эскпортировать из модуля. Там можно при экспорте указать, какие конструкторы будут доступны.
В принципе все норм. Но возможен еще такой вариант:
http://ideone.com/E0YHA
Вот и вся разница.
Нет, не всегда. В твоём случае разницы нет:
Шесть лет, Карл. roskomgovno раскопал тред и поднял в сток, невольно перечитал. Как быстро время летит, вот вроде вчера только было.
http://www.haskell.org/tutorial/goodies.html#tut-user-types
Кстати, а зачем эти сигнатуры функций указывать, если они все равно выводятся автоматически всегда? Это лишняя трата символов в программе.
map :: (a -> b) -> [a] -> [b]
Так что, сенсация: PHP лучше C++!
меня код в теме очень повеселил, например
Ведь скомпилируется, что так
member :: a -> [a] -> Bool
что с указанием этого класса (Eq a) => . Так зачем это нужно?
...обидеться и уйти плакать в подушку
Да ну? Имхо, он обматерит вас, сказав, что a не инстанс Eq, поэтому == юзать нельзя. (Проверять лень.)
http://ideone.com/I9yO1
А теперь уебывай.
Мне всегда было интересно, почему они в фильмах не жрут друг друга
OMG. Я только что изобрёл зомби-каннибалов. Как раз подойдёт для высеров типа "Ночь мёртвых мертвецов-8".
спорно
вот это надо в шапку сайта!!!
На гумне и шапка горит.
На гумне и шапка гумнит.
fxd
хедер
fxd
Перед гумном бисер не мечут.
Блян, что я написал... Представил себе самолет над городом, распыляющий гумно. Впрочем, удобрение.
selffix
Простите конечно за грубость, но из
Функции код не выкинешь
p.s. чорт, лесенка уперлась :)
Уж не знаю есть ли такая поговорка.
Не гумном единым жив говнокод
fix
http://govnokod.ru/11549#comment150158
Я все думал, чего же не хватает :)
fixed
И превратил его в гумно.
А если б за гумно он взялся,
То бы потратил меньше сил.
вдруг банить гумноту взялись
вдруг банить гумноту взялись.
Да в это дело так с душой дались:
Для гостей - вторник, пятница, суббота;
И капчу сделали для говнокода.
А модер красным жжет напалмом,
И бегает размахивая кляпом.
Даже давал права другим он юзерам,
Да только вот гумно и ныне там.
Что долго думать тут? Он за GC принялся:
Книженций накупил
и долго в них вчитался
А там и счетчик ссылок запилил.
Лишь скоростя, раз в четверо упали
Да что до этого печали?
Однако же смеется Березняк
И говорит: "Так я же не дурак
И ту беду поправлю:
Длиннее прежнего я циклов понаставлю".
Таким же образом, видал я, иногда
Иные господа велосипедами,
Запутавши свой код безмерно наговняют,
Посмотришь: костылями баги затыкают.
На лад их дело не пойдёт,
И выйдет из него не дело, только мука.
Однажды Программист, Манагер да Админ
Писать проект большой взялись,
И вместе трое все в него впряглись;
Из кожи лезут вон, проекту всё нет ходу!
Задача бы для них казалась и легка:
Да вот Манагер рвётся в облака,
Админ все пятится назад, Программер пишет воду.
Кто виноват из них, кто прав — судить не нам;
Да только код и ныне там.
На смех всему честному говнокоду.
Писет в воду
fxd
И вообще, сотни нефти этому треду!
Как только кто-нибудь догумнякает лесенку.
Но вот что-то мне подсказывает, что погибель предрекают...
"Тарас крестам не товарищ", так и вовсе шедеврально.
Свисти-свисти...