Понял, кстати те Хаскель-враперы (и еще есть оригинальные на Схеме), о которых я выше писал, позволяют писать код используя синтаксис безтипового лямбда-исчисления, который дальше преобразовывается в комбинатор (типа компилируется) и исполняется интерпретатором Lazy-K.
У меня была даже идея написать библиотеку для эмуляции более сложного синтаксиса, но все закончилось комбинаторами для списка
[A B C D]
где "[" — комбинатор, который принимал свои аргументы до тех пор пока не встретит комбинатор "]" (индикатор конца), результатом был список.
А потом я столкнулся с проблемами, вызванными безтиповостю, которые сильно усложняли жизнь, и перешел на типизированное.
Не в этом дело — может и не входит, но если возможность ввода/вывода есть и при этом язык полностью чист — это же лучше (ну меня это очень впечатлило) чем чистый, но ничего (видимого) не делающий.
Lazy K, к тому же, еще и ленивый.
Круто! На хабре комбинаторная логика.
Unlambda — штука интересная, но это все же не то — не очень она уж и чистая, совсем даже не чистая.
я вам советую Lazy K — это по настоящему (в самом-пресамом прямом смысле слова) чистый язык — для истинных ценителей.
*(У меня есть враперы на Хаскеле, чтоб удобно было, если заинтересует)
Что-то маловато у вас там накопилось, как для статьи, ИМХО.
А когда же Хаскель выбирать? а на Питоне/Перле когда писать? А как, скажите, похаписты выбрали свой язык? Или JavaScript например? А как, например мне выбрать Лисп или Схему?
Следует глубже войти в изучаемую проблему, попробовать разные парадигмы, посмотреть разные продукты, написанные на тех или иных языках, лучше разобраться в преимуществах, истории языков. Короче, тема очень интересная, но и работы очень много.
Спасибо, интересная статья.
А это как-то декларируется, что PT_EXITED — это максимальная константа? Почему не проверяется на неравенство?
fib(&pt1, 1000, &value) < PT_EXITED
И да, отдельная благодарность за простое объяснение, что такое сопрограммы ("… вместо отношений программа-подпрограмма вполне уместны отношения сопрограмма-сопрограмма...").
Даже для самых присамых императивщиков несекрет, почему декларативный стиль называется декларативным, и в чем его непоколебимый плюс в отображении сути кода.
Для меня этот код не сложен, поэтому ошибок там нет=)
С использованием согласен: вариант с шаблонизацией литерала в случае неправильного использования из-за препроцессинга дает далеко-не-сразу-понятные ошибки.
Ну а все остальное, а особенно кортежи, по моему проще пареной репы.
Не только gcc, есть еще много утилит для статического анализа кода, но это совсем не то, это другой уровень абстракции: код проверяют снаружи, этот же подход разрешает делать это изнутри.
У меня была даже идея написать библиотеку для эмуляции более сложного синтаксиса, но все закончилось комбинаторами для списка
где "[" — комбинатор, который принимал свои аргументы до тех пор пока не встретит комбинатор "]" (индикатор конца), результатом был список.
А потом я столкнулся с проблемами, вызванными безтиповостю, которые сильно усложняли жизнь, и перешел на типизированное.
Lazy K, к тому же, еще и ленивый.
*(Кстати Lazy K — поддерживает Iota и Jot, и синтаксис Unlambda)
Unlambda — штука интересная, но это все же не то — не очень она уж и чистая, совсем даже не чистая.
я вам советую Lazy K — это по настоящему (в самом-пресамом прямом смысле слова) чистый язык — для истинных ценителей.
*(У меня есть враперы на Хаскеле, чтоб удобно было, если заинтересует)
А когда же Хаскель выбирать? а на Питоне/Перле когда писать? А как, скажите, похаписты выбрали свой язык? Или JavaScript например? А как, например мне выбрать Лисп или Схему?
Следует глубже войти в изучаемую проблему, попробовать разные парадигмы, посмотреть разные продукты, написанные на тех или иных языках, лучше разобраться в преимуществах, истории языков. Короче, тема очень интересная, но и работы очень много.
А это как-то декларируется, что PT_EXITED — это максимальная константа? Почему не проверяется на неравенство?
И да, отдельная благодарность за простое объяснение, что такое сопрограммы ("… вместо отношений программа-подпрограмма вполне уместны отношения сопрограмма-сопрограмма...").
*(вот теперь я понимаю, почему мой код называют сложным)
ненавижу С++не использую printf.А действительно дополнительное заворачивание в TEMPLATE_LITERAL выглядит громоздко?
Примерно так.
С использованием согласен: вариант с шаблонизацией литерала в случае неправильного использования из-за препроцессинга дает далеко-не-сразу-понятные ошибки.
Ну а все остальное, а особенно кортежи, по моему проще пареной репы.