All streams
Search
Write a publication
Pull to refresh
1
0
Дмитрий @dima_mendeleev

User

Send message
Понял, кстати те Хаскель-враперы (и еще есть оригинальные на Схеме), о которых я выше писал, позволяют писать код используя синтаксис безтипового лямбда-исчисления, который дальше преобразовывается в комбинатор (типа компилируется) и исполняется интерпретатором Lazy-K.

У меня была даже идея написать библиотеку для эмуляции более сложного синтаксиса, но все закончилось комбинаторами для списка
[A B C D]

где "[" — комбинатор, который принимал свои аргументы до тех пор пока не встретит комбинатор "]" (индикатор конца), результатом был список.

А потом я столкнулся с проблемами, вызванными безтиповостю, которые сильно усложняли жизнь, и перешел на типизированное.
Я не понял ваше замечание. Lazy-K же совмещает лямбда-исчесление и свой IO.
Не в этом дело — может и не входит, но если возможность ввода/вывода есть и при этом язык полностью чист — это же лучше (ну меня это очень впечатлило) чем чистый, но ничего (видимого) не делающий.
Lazy K, к тому же, еще и ленивый.
Если только ski — то как же осуществляется IO?
*(Кстати Lazy K — поддерживает Iota и Jot, и синтаксис Unlambda)
Круто! На хабре комбинаторная логика.
Unlambda — штука интересная, но это все же не то — не очень она уж и чистая, совсем даже не чистая.
я вам советую Lazy K — это по настоящему (в самом-пресамом прямом смысле слова) чистый язык — для истинных ценителей.
*(У меня есть враперы на Хаскеле, чтоб удобно было, если заинтересует)
Что-то маловато у вас там накопилось, как для статьи, ИМХО.
А когда же Хаскель выбирать? а на Питоне/Перле когда писать? А как, скажите, похаписты выбрали свой язык? Или JavaScript например? А как, например мне выбрать Лисп или Схему?
Следует глубже войти в изучаемую проблему, попробовать разные парадигмы, посмотреть разные продукты, написанные на тех или иных языках, лучше разобраться в преимуществах, истории языков. Короче, тема очень интересная, но и работы очень много.
Спасибо, интересная статья.
А это как-то декларируется, что PT_EXITED — это максимальная константа? Почему не проверяется на неравенство?
fib(&pt1, 1000, &value) < PT_EXITED

И да, отдельная благодарность за простое объяснение, что такое сопрограммы ("… вместо отношений программа-подпрограмма вполне уместны отношения сопрограмма-сопрограмма...").
… и, как я понимаю, по возможностям этот редактор сравним с аналогами?
Все гениально — просто!
*(вот теперь я понимаю, почему мой код называют сложным)
Чтобы понять, лучше конечно бы познакомиться, а если серьёзно, то разве не понятно все с названия концепции «декларативное программирование»?
Допишите, допишите, все дописывайте. Очень крутая штука. (А меня особенно отложенность интересует.)
Даже для самых присамых императивщиков несекрет, почему декларативный стиль называется декларативным, и в чем его непоколебимый плюс в отображении сути кода.
С потоками согласен, я вообще ненавижу С++ не использую printf.
А действительно дополнительное заворачивание в TEMPLATE_LITERAL выглядит громоздко?
Ну как же нельзя, я же уже писал об этом. Создаем pack длинны кортежа, а далее подставляем в функцию взятия элемента:
template<int... INDXs>
T apply(FuncType f, tuple t)
{
    return f(get<INDXs>(t)...);
}

Примерно так.
Для меня этот код не сложен, поэтому ошибок там нет=)
С использованием согласен: вариант с шаблонизацией литерала в случае неправильного использования из-за препроцессинга дает далеко-не-сразу-понятные ошибки.
Ну а все остальное, а особенно кортежи, по моему проще пареной репы.
Не только gcc, есть еще много утилит для статического анализа кода, но это совсем не то, это другой уровень абстракции: код проверяют снаружи, этот же подход разрешает делать это изнутри.
я примерно понял о чем речь, но по-моему вы имеете ввиду рантайм
Я бы с удовольствием, а куда нужно обратиться? Может кто-то уже знает как?
Что-то на волне с макросами забыл о существовании функций))) Может по-этому они зло

Information

Rating
Does not participate
Location
Украина
Registered
Activity