Здравствуйте, WolfHound, Вы писали:
WH>Nemerle. http://rsdn.ru/forum/nemerle/ WH>Есть мощьное метапрограммирование. WH>Компилятор можно запускать в рантайме. WH>Плюс статическая типизация, вывод типов и много других плюшек.
Плюс реально работает под дотнетом, а не сделан и забыт как большая часть диалектов лиспа адаптированных к дотнету.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Aleх, Вы писали:
AV>>>Подумалось тут. Есть ли такой язык\технология, который мог бы в рантайме, пользуясь шаблоном кода (один) и правилами обработки данных (много разных), получать код для обработки именно необходимых данных? потом в рантайме запустить полученный код, отработать и выдать результат?
A>Это есть почти во всех языках программирования. Я думаю, автор имел ввиду метапрограммирование в рантайме, что уже не является ключевой особенностью ФП.
Кстати, почему в рантайме? Автор вопроса сказал "потом в рантайме запустить полученный код". Это как раз отлично проходит под метопрограммирование во время компиляции и запуск результата в рантайме.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Я вот тоже не верю. Я знаю что они существуют, но так же знаю что они не способны решить всех проблем при программировании. VD>Автор вопроса выражается сумбурно, но похоже ему нужно метапрограммирование, а не функции высшего порядка, которые к слову, есть и в C#.
Там кривые.
Вообще, надо смотреть конкретную задачу, решат её HOF или нужна тяжёлая артиллерия в лице МП.
Здравствуйте, lomeo, Вы писали:
VD>>Автор вопроса выражается сумбурно, но похоже ему нужно метапрограммирование, а не функции высшего порядка, которые к слову, есть и в C#.
L>Там кривые.
Да ладно.
L>Вообще, надо смотреть конкретную задачу, решат её HOF или нужна тяжёлая артиллерия в лице МП.
+1 Но я надеюсь автор понимает что ему нужно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
L>"Кривые" неверное слово, каюсь. Неудобные.
Да обычные они. Не хуже чем в других языках. Там сам язык плохо приспособлен для функционального программировния, так как есть деление на expressions и statments, плюс сахара маловато конечно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, BulatZiganshin, Вы писали:
>>>> ну а HOF создают в рантайме не код, а функции MZ>>>Я бы так не сказал. L>>Почему? BZ>он не верит в существование first-class functions
Элементарный пример: пользователь вводит код с клавиатуры. Или сами данные являются произвольным кодом для исполнения. hof не помогут, нужен полноценный интерптетатор.
И hof далеко не обязательно что-либо вообще “создают в рантайме”, это просто абстракция такая.
Здравствуйте, Кодёнок, Вы писали:
Кё>Элементарный пример: пользователь вводит код с клавиатуры. Или сами данные являются произвольным кодом для исполнения. hof не помогут, нужен полноценный интерптетатор.
Как тут МП поможет? Этот пример по-моему вообще из другой оперы.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, WolfHound, Вы писали:
WH>>Nemerle. http://rsdn.ru/forum/nemerle/ WH>>Есть мощьное метапрограммирование. WH>>Компилятор можно запускать в рантайме. WH>>Плюс статическая типизация, вывод типов и много других плюшек.
VD>Плюс реально работает под дотнетом, а не сделан и забыт как большая часть диалектов лиспа адаптированных к дотнету.
Вменяемые люди не пользуются лиспами под дотнетом. Они берут современные реализации CL, работающие непосредственно на операционной системе, и компилирующие непосредственно в машинные коды, и потом берут библиотеку RDNZL и дергают дотнет прямо из лиспа.
Здравствуйте, Alexey Voytsehovich, Вы писали:
AV>Подумалось тут. Есть ли такой язык\технология, который мог бы в рантайме, пользуясь шаблоном кода (один) и правилами обработки данных (много разных), получать код для обработки именно необходимых данных? потом в рантайме запустить полученный код, отработать и выдать результат?
Common Lisp. Например, я недавно написал библиотеку Virgil, которая по спецификациям си-подобных типов(описанных в S-выражениях) автоматически генерирует код для маршалинга лисповских данных в "неуправляемую память" и обратно. Хотя основной упор там делается на кодогенерацию(ради эффективности маршалинга), спецификации типов могут также и интерпретироваться в рантайме(например в случае, когда спецификация типа в некоем конкретном случае при компиляции не известна).