Здравствуйте, alex_public, Вы писали:
_>В смысле синтаксиса согласен. Но других то инструментов с сопоставимыми возможностями не видно. Только всякие кривые домашние велосипеды. А у xslt один docbook чего стоит. )
Здравствуйте, alex_public, Вы писали:
_>А так, ничего даже близкого на php (даже если забыть, что это жутчайший язык сам по себе) нет. Скажем на xslt у меня код в две строки генерирует chm файл из xml файла. Другие две строки генерируют полноценный "сайт" (с навигацией и т.п.) из того же xml файла. А ещё другие две строки (ну там может чуть больше) генерируют красиво оформленный pdf из того же xml файла. Не знаю как сделать тоже самое на php таким же количеством кода. )))
Здравствуйте, FR, Вы писали:
FR>Ну вроде инструменты есть:
Инструментов-то дофига, только лиц с xml-лом головного мозга проще сразу в склиф отправлять, чем использовать инструменты для решения искственно созданных проблем.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, samius, Вы писали:
S>>В хаскеле ведь тип не уникален. S>>Но будь возможность заюзать
ПМ>Подразумевается, что такой возможности нет. Значит таки уникален
Хорошо, пусть будет уникальным. Как уникальность типа внутреннего представления мира хаскеля гарантирует чистоту при взаимодействии action с внешним миром во время выполнения действия?
Здравствуйте, samius, Вы писали:
ПМ>>Подразумевается, что такой возможности нет. Значит таки уникален S>Хорошо, пусть будет уникальным. Как уникальность типа внутреннего представления мира хаскеля гарантирует чистоту при взаимодействии action с внешним миром во время выполнения действия?
Чистота — это свойство функции возвращать тот же результат при тех же исходных данных (т.е. вызов функции можно безопасно заменить её вычисленным значением). Дыкть вот, уникальные типы — это такой хак, который не позволяет дважды вызвать функцию с одним и тем же значением.
А дальше всё зависит от твоих религиозных взглядов — являешься ли ты ультрафинитистом, веришь ли в закон исключенного третьего, поклоняешься ли аксиоматике Цермело—Френкеля...
Т.е. ни на Хаскелле, ни на языках с уникальными типами невозможно (без unsafe-хаков) написать функцию, которая бы возвращала разные значения при одинаковых аргументах, это касается и типа *World (программа принимает его при запуске, ничего не знает про его внутреннее устройство и ввиду уникальности не может создавать на него ссылки). Разумеется, то, что функция возвращает одинаковые значения, ты тоже проверить не сможешь, т.к. не можешь создавать экземпляры или ссылки на *World. Но можно ли считать ли функцию чистой, если невозможно убедиться в обратном, это уже вопрос религии, а не математики.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, samius, Вы писали:
ПМ>>>Подразумевается, что такой возможности нет. Значит таки уникален S>>Хорошо, пусть будет уникальным. Как уникальность типа внутреннего представления мира хаскеля гарантирует чистоту при взаимодействии action с внешним миром во время выполнения действия?
ПМ>Чистота — это свойство функции возвращать тот же результат при тех же исходных данных (т.е. вызов функции можно безопасно заменить её вычисленным значением). Дыкть вот, уникальные типы — это такой хак, который не позволяет дважды вызвать функцию с одним и тем же значением.
Чистота — это не только детерминированность, это еще и отсутствие побочных эффектов. Но даже детерминированности при взаимодействии со внешним миром уникальные типы обеспечить не могут. Не говоря о побочных эффектах. Я говорю о чистоте при взаимодействии с внешним миром, а не экземпляром World.
ПМ>А дальше всё зависит от твоих религиозных взглядов — являешься ли ты ультрафинитистом, веришь ли в закон исключенного третьего, поклоняешься ли аксиоматике Цермело—Френкеля...
не являюсь, не верю, не поклоняюсь. Грешен тем, что смотрел в определение чистой функции в википедии.
ПМ>Т.е. ни на Хаскелле, ни на языках с уникальными типами невозможно (без unsafe-хаков) написать функцию, которая бы возвращала разные значения при одинаковых аргументах, это касается и типа *World (программа принимает его при запуске, ничего не знает про его внутреннее устройство и ввиду уникальности не может создавать на него ссылки). Разумеется, то, что функция возвращает одинаковые значения, ты тоже проверить не сможешь, т.к. не можешь создавать экземпляры или ссылки на *World. Но можно ли считать ли функцию чистой, если невозможно убедиться в обратном, это уже вопрос религии, а не математики.
Возвращать одинаковые значения при одинаковых аргументах — не единственное условие даже для детерминированности.
S>Чистота — это не только детерминированность, это еще и отсутствие побочных эффектов.
Является ли нагрев процессора побочным эффектом? Без формального определения побочного эффекта мы снова скатываемся в религию, поэтому мне интересно говорить только о наблюдаемых побочных эффектах. Если программа не может "наблюсти" побочный эффект вызова какой-либо функции, то можно считать, что его нет, потому что на дальнейший ход вычислений он не влияет. А "наблюсти" побочный эффект можно только с помощью недетерминированной функции, читающей "мир". Поэтому я буду считать детерминированность достаточным условием чистоты.
S>Я говорю о чистоте при взаимодействии с внешним миром, а не экземпляром World.
Ну вот со всем утверждениями относительно Реального Мира, Бога и Того, Как Там Всё На Самом Деле — нужно обращаться не ко мне, а к Архитектору Матрицы.
S>Возвращать одинаковые значения при одинаковых аргументах — не единственное условие даже для детерминированности.
Да ну? А что еще надо? Кровь китайских девственниц?
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Т.е. ни на Хаскелле, ни на языках с уникальными типами невозможно (без unsafe-хаков) написать функцию, которая бы возвращала разные значения при одинаковых аргументах
Тут нужно очень аккуратно определять, что считать ее аргументами. Она же может быть замыканием, содержащим ref'ы, например.
Здравствуйте, Паблик Морозов, Вы писали:
S>>Чистота — это не только детерминированность, это еще и отсутствие побочных эффектов.
ПМ>Является ли нагрев процессора побочным эффектом? Без формального определения побочного эффекта мы снова скатываемся в религию, поэтому мне интересно говорить только о наблюдаемых побочных эффектах. Если программа не может "наблюсти" побочный эффект вызова какой-либо функции, то можно считать, что его нет, потому что на дальнейший ход вычислений он не влияет. А "наблюсти" побочный эффект можно только с помощью недетерминированной функции, читающей "мир". Поэтому я буду считать детерминированность достаточным условием чистоты.
Такую чистоту предлагаю тебе обсуждать с теми, кто считает так же.
S>>Я говорю о чистоте при взаимодействии с внешним миром, а не экземпляром World.
ПМ>Ну вот со всем утверждениями относительно Реального Мира, Бога и Того, Как Там Всё На Самом Деле — нужно обращаться не ко мне, а к Архитектору Матрицы.
Это ты ко мне обратился
. Причем с такими утверждениями, что мои мне кажутся невинными на их фоне.
S>>Возвращать одинаковые значения при одинаковых аргументах — не единственное условие даже для детерминированности.
ПМ>Да ну? А что еще надо? Кровь китайских девственниц?
Когда я писал ответ, не знал что у тебя свое понимание чистоты и наверное детерминированности. Так что не обращай внимания, я о чем-то другом.
Здравствуйте, D. Mon, Вы писали:
DM>Тут нужно очень аккуратно определять, что считать ее аргументами. Она же может быть замыканием, содержащим ref'ы, например.
Операции с рефами тоже принимают мир или не сбегают из монады (STRef)
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, samius, Вы писали:
S>>Такую чистоту предлагаю тебе обсуждать с теми, кто считает так же.
ПМ>А какую чистоты ты предлагаешь обсудить?
Я обсуждал чистоту в ее общедоступном определении с википедии.
ПМ>Повторяю вопрос — функция, в результате которой нагревается процессор времени чистая или нет?
Этот вопрос ты мне еще не задавал. Постом выше был вопрос о том, является ли нагрев процессора побочным эффектом. Там же ты продемонстрировал нежелание использовать термины в общеупотребимом смысле и неинтерес к обсуждению их. Потому отвечать тебе на твои вопросы в терминах википедии я не вижу смысла, а использовать твою терминологию, в свою очередь, нет желания у меня.
Так что направлю тебя к Архитектору твоей Матрицы.
Здравствуйте, alex_public, Вы писали:
_>Ну и откуда я возьму эти функции в php?
А откуда я возьму две строчки на xslt, которые генерируют pdf? Особенно если учесть, что pdf — бинарный формат.
_>Т.е. вы предлагаете писателям документации и переводчикам работать с программным кодом, а не с текстом? )
Вы ведь тоже предлагаете им работать с каким-то xml-ем, а не с текстом.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>А откуда я возьму две строчки на xslt, которые генерируют pdf? Особенно если учесть, что pdf — бинарный формат.
http://docbook.sourceforge.net — здесь. Причём pdf — это на самом деле не самое интересное то...
_>>Т.е. вы предлагаете писателям документации и переводчикам работать с программным кодом, а не с текстом? )
ПМ>Вы ведь тоже предлагаете им работать с каким-то xml-ем, а не с текстом.
ME>>скажем, почему список из объектов, у каждого из которых есть функция print, чем-то хуже "списка из print-ов"? V>Тем что это объекты с ф-ей print, а не просто ф-ия print сама по себе. Больше сущностей.
гы-гы
а разве в хаскеле нет разницы между функцией и замыканием? афайк print легко может быть замыканием, и нет способа отличить замыкание от настоящей функции
а замыкание -- это тот же объект, только хуже оно так же как и объект, держит (т.е. не дает собрать мусорщику) данные, которые держат другие данные, и т.д.; при этом если про поля, захваченные замыканием, мы ничего не знаем, то поля объекта могут быть в явном виде ограничены, скажем, путем объявления класса final в java
ME>>каким образом IO a -- чистая ф-я?
V>Повторяю: V>IO a = World -> (a, World)
ммм... а мы про хаскель говорим или про что?
data IO a = ... -- abstractinstance Functor IO where
fmap f x = x >>= (return . f)
instance Monad IO where
(>>=) = ...
return = ...
fail s = ioError (userError s)
а "World -> (a, World)" это какие-то рассказы, которые могут и не соответствовать истине
p.s. to Klapaucius и остальным -- дойду постепенно и до ваших ответов
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Паблик Морозов, Вы писали:
ПМ>>А откуда я возьму две строчки на xslt, которые генерируют pdf? Особенно если учесть, что pdf — бинарный формат.
_>http://docbook.sourceforge.net — здесь. Причём pdf — это на самом деле не самое интересное то...
_>>>Т.е. вы предлагаете писателям документации и переводчикам работать с программным кодом, а не с текстом? )
ПМ>>Вы ведь тоже предлагаете им работать с каким-то xml-ем, а не с текстом.
_>http://www.syntext.com/products/serna-free/ не, с текстом.
Если речь идёт о верстке документов и использовании каких-то тулзов для конвертации их в различные форматы, то пусть хоть в ворде верстают, в этом ничего плохого нет. Просто из
[quote]
Я лично ничего не верстаю вообще, как впрочем и GUI не рисую сам. Я больше занимаюсь проектирование архитектуры всего этого. И вот в рамках нашей архитектуры все html генерятся у нас с помощью xslt шаблонов из xml данных.
[/quote]
Я сделал вывод, что речь идёт о каком-то веб-интерфейсе, где сервер генерируюет xml, который самописными xslt-шками конвертируется в веб-страницы. Такую придурь я встречал и именно с неё я . А если программисту не приходится трогать xml и xslt, то норм, не трогаешь — не пахнет.