Хе... Хотел бы я посмотреть на примерчик... Например видоизменить грамматику, на допустим, обратную польскую запись как в смоллтолке... Ну или хотя бы на S-выражения...Shaos wrote: Funny должен поддерживть определение не только унарных или бинарных операторов, но и любых n-арных, что даёт возможность городить новый синтаксис с грамматикой поверх существующих...
Функциональный язык Funny
Moderator: Shaos
-
- Senior
- Posts: 180
- Joined: 28 Feb 2006 21:34
-
- Senior
- Posts: 180
- Joined: 28 Feb 2006 21:34
-
- Doomed
- Posts: 491
- Joined: 16 Apr 2005 22:35
- Location: Томск
Re: Функциональный язык Funny
Интересная тема. Но есть некоторые замечания по терминологии.
Согласись, что термин "отложенные вычисления" гораздо более понятен, чем "ленивые вычисления" ?
Термин же "ленивый" возник из-за безграмотности технического переводчика, который когда-то где-то буквально перевёл слово lazy, не вникая в смысл текста...
В общем я за то, чтобы термины были понятны
Термн "ленивый" - это хоть и устоявшийся в определённых кругах термин, но неправильный. Гораздо более правильный термин - "отложенный".Shaos wrote: Ленивая интепретация означает,
Согласись, что термин "отложенные вычисления" гораздо более понятен, чем "ленивые вычисления" ?
Термин же "ленивый" возник из-за безграмотности технического переводчика, который когда-то где-то буквально перевёл слово lazy, не вникая в смысл текста...
В общем я за то, чтобы термины были понятны

-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Функциональный язык Funny
lazy = ленивыйSfS wrote:Интересная тема. Но есть некоторые замечания по терминологии.
Термн "ленивый" - это хоть и устоявшийся в определённых кругах термин, но неправильный. Гораздо более правильный термин - "отложенный".Shaos wrote: Ленивая интепретация означает,
Согласись, что термин "отложенные вычисления" гораздо более понятен, чем "ленивые вычисления" ?
Термин же "ленивый" возник из-за безграмотности технического переводчика, который когда-то где-то буквально перевёл слово lazy, не вникая в смысл текста...
В общем я за то, чтобы термины были понятны
так проще и понятнее

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Обратную польскую говришь?... Ну вот например так:d_wanderer wrote:Хе... Хотел бы я посмотреть на примерчик... Например видоизменить грамматику, на допустим, обратную польскую запись как в смоллтолке... Ну или хотя бы на S-выражения...Shaos wrote: Funny должен поддерживть определение не только унарных или бинарных операторов, но и любых n-арных, что даёт возможность городить новый синтаксис с грамматикой поверх существующих...
Code: Select all
type polish = push(num)|oper((num,num)->num);
fun eval (list(polish)) -> num
{
(lp)=evalstack(lp,[]);
}
fun evalstack (list(polish),list(num)) -> num
{
(empty_list,n::empty_list) = n;
(push(n)::p,s) = evalstack(p,n::s);
(oper(f)::p,a::b::s) = evalstack(p,op(b,a)::s);
}
// вариант записи с пролого-подобным конструктором списков [H|T] вместр хоповского ::
fun evalstack (list(polish),list(num)) -> num
{
([],[n]) = n;
([push(n)|p],s) = evalstack(p,[n|s]);
([oper(f)|p],[a,b|s]) = evalstack(p,[op(b,a)|s]);
}
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Senior
- Posts: 180
- Joined: 28 Feb 2006 21:34
Минутку... Но ведь нотацию объявления функции ты не меняешь. То есть как была нотация определенного ВИДА ВЫРАЖЕНИЯ типа
То оно так и осталось. Исчезла простота обратной польской записи такой какой она есть в ФОРТЕ и смоллтолке.. Смысла от таких наворотов я не вижу.
Метаязык долджен поддерживать возможность изменения именно ВХОДНОЙ ГРАММАТИКИ. Посмотри на то что сделано в Common Lisp.
Там меняются имено ПРАВИЛА интерпретации символов во входящем потоке. Если хочешь - кину ссылки из Гая Стила.
Это во первых. Во вторых, в какой тип байткода ты собрался его транслировать. Я могу показать (если интересно) что получилось у меня при написании байткода для симпла. Особенно сборка мусора...
Написанная мной ВМ работает дажа на небольших объемах памяти (около 10 Кб).
Code: Select all
FUN name '(' ARG_LIST ')' '{'
EXPT ';'
'}'
Метаязык долджен поддерживать возможность изменения именно ВХОДНОЙ ГРАММАТИКИ. Посмотри на то что сделано в Common Lisp.
Там меняются имено ПРАВИЛА интерпретации символов во входящем потоке. Если хочешь - кину ссылки из Гая Стила.
Это во первых. Во вторых, в какой тип байткода ты собрался его транслировать. Я могу показать (если интересно) что получилось у меня при написании байткода для симпла. Особенно сборка мусора...
Написанная мной ВМ работает дажа на небольших объемах памяти (около 10 Кб).
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Ну можно оператор описать, который будет заменять вызов eval, если в этом загвоздка:d_wanderer wrote:Минутку... Но ведь нотацию объявления функции ты не меняешь. То есть как была нотация определенного ВИДА ВЫРАЖЕНИЯ типа
То оно так и осталось. Исчезла простота обратной польской записи такой какой она есть в ФОРТЕ и смоллтолке.. Смысла от таких наворотов я не вижу.Code: Select all
FUN name '(' ARG_LIST ')' '{' EXPT ';' '}'
Метаязык долджен поддерживать возможность изменения именно ВХОДНОЙ ГРАММАТИКИ. Посмотри на то что сделано в Common Lisp.
Там меняются имено ПРАВИЛА интерпретации символов во входящем потоке. Если хочешь - кину ссылки из Гая Стила.
Code: Select all
fun eval_op (polish,list(polish)) -> num
{
@2000 %1 ~ %2;
(p,lp)=evalstack([p|lp],[]);
};
// тот же пример, что в предыдущем моём посте приведён, теперь будет выглядеть так:
push(1) ~ push(2) ~ push(3) ~ oper(*) ~ oper(+)
Байт код нужен будет для представления структур данных и функциональных преобразователей данных, а интерпретатор этих структур будет нативным (на сях написанным).d_wanderer wrote: Это во первых. Во вторых, в какой тип байткода ты собрался его транслировать. Я могу показать (если интересно) что получилось у меня при написании байткода для симпла. Особенно сборка мусора...
Написанная мной ВМ работает дажа на небольших объемах памяти (около 10 Кб).
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Senior
- Posts: 185
- Joined: 07 Aug 2006 10:18
насколько я знаю, такой подход к совмещению io и функциональности, некогда использовался в haskell'е. до тех пор, пока они не придумали IOMonad -- концепцию, до которой я так и не допетрил.Shaos wrote:Я нашёл способ обойти проблему ограничения в виде чистых функций применительно к вводу данных. Напомню что функциональный язык без побочных эффектов запрещает существование функций, возвращающих разные результаты при одних и тех же аргументах, значит никакого ввода данных с клавиатуры и работы с файлами (хотя файлы можно читать если предположить что их содержимое не меняется). Так вот я предлагаю использовать для этого функции возвращающие не отдельный символ, а список ...
зы. а автор знаком с хаскеллом? а то я понять не могу, то ли всё это изобретение велосипеда, то ли мысль глубже чем я вижу...
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Знаком отчасти, но мне он не сильно симпатичен - там ведь побочные эффекты допустимы - процедурности и императивности слишком много и например сравнение с образцом идёт сверху вниз, а идеальным всё-таки является вариант когда берётся наиболее подходящая конструкция - как в Hope...bar wrote:насколько я знаю, такой подход к совмещению io и функциональности, некогда использовался в haskell'е. до тех пор, пока они не придумали IOMonad -- концепцию, до которой я так и не допетрил.Shaos wrote:Я нашёл способ обойти проблему ограничения в виде чистых функций применительно к вводу данных. Напомню что функциональный язык без побочных эффектов запрещает существование функций, возвращающих разные результаты при одних и тех же аргументах, значит никакого ввода данных с клавиатуры и работы с файлами (хотя файлы можно читать если предположить что их содержимое не меняется). Так вот я предлагаю использовать для этого функции возвращающие не отдельный символ, а список ...
зы. а автор знаком с хаскеллом? а то я понять не могу, то ли всё это изобретение велосипеда, то ли мысль глубже чем я вижу...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Решил познакомиться с хаскелом поближе - на аппловском ноуте в дебиане он уже был как стандартный пакет - теперь взялся ставить на свой домашний пц со слакварью - пошёл на haskell.org и взялся было качать самую последнюю версию GHC - 6.6.1. Сюрприз номер один - чтобы собрать хаскел из сырцов нужен уже установленный... хаскел более старой версии!... Ок - идём к бинарным сборкам для линуха. Скачал, развернул - далее установка через configure и make install (как альтернатива - make in-place). Сюрприз номер два - make install где-то зациклился при попытке скопировать либы в /usr/local/lib... Не беда - делаем локальную установку make in-place (сделать рабочим в том месте где лежит) вместо глобальной make install. Вроде всё срослось - однако при запуске интерпретатора не получилось запустить ядро из lib-каталога - сюрприз номер три: у него атрибутов запуска небыло - поправил. Далее оказалось что интерпретатор не может найти свои либы - сюрприз номер четыре: в файле package.conf осталось куча ссылок на /usr/local/lib/... Короче пришлось вручную править. Итог - сыровато будет для серъезного и массового применения. Хотя чeго можно ждать от проекта, который держит сотрудник микрософта?...Shaos wrote:Знаком отчасти, но мне он не сильно симпатичен - там ведь побочные эффекты допустимы - процедурности и императивности слишком много и например сравнение с образцом идёт сверху вниз, а идеальным всё-таки является вариант когда берётся наиболее подходящая конструкция - как в Hope...bar wrote: зы. а автор знаком с хаскеллом? а то я понять не могу, то ли всё это изобретение велосипеда, то ли мысль глубже чем я вижу...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Senior
- Posts: 185
- Joined: 07 Aug 2006 10:18
не знал что всё так сложно. я его собирал исключительно через гентушные портажи.Shaos wrote:Решил познакомиться с хаскелом поближе - на аппловском ноуте в дебиане он уже был как стандартный пакет - теперь взялся ставить на свой домашний пц со слакварью - пошёл на haskell.org и взялся было качать самую последнюю версию GHC - 6.6.1. Сюрприз номер один - чтобы собрать хаскел из сырцов нужен уже установленный... хаскел более старой версии!...
[...]
Итог - сыровато будет для серъезного и массового применения.

это ты к чему? типо это плохо законспирированная попытка дискредитировать не-MS?Shaos wrote:Хотя чeго можно ждать от проекта, который держит сотрудник микрософта?...
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Скорее Haskell постепенно превратится во временное явление под названием "функциональный C#"bar wrote:это ты к чему? типо это плохо законспирированная попытка дискредитировать не-MS?Shaos wrote:Хотя чeго можно ждать от проекта, который держит сотрудник микрософта?...

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Справедливости ради следует сказать что всё вышесказанное относится только к конкретной реализации Haskell под названием GHC - может с другими реализациями не всё так плохо...bar wrote:не знал что всё так сложно. я его собирал исключительно через гентушные портажи.Shaos wrote:Решил познакомиться с хаскелом поближе - на аппловском ноуте в дебиане он уже был как стандартный пакет - теперь взялся ставить на свой домашний пц со слакварью - пошёл на haskell.org и взялся было качать самую последнюю версию GHC - 6.6.1. Сюрприз номер один - чтобы собрать хаскел из сырцов нужен уже установленный... хаскел более старой версии!...
[...]
Итог - сыровато будет для серъезного и массового применения.
Я тут за главного - если что шлите мыло на me собака shaos точка net