thedeemon: (office)
[personal profile] thedeemon
Уважаемый [livejournal.com profile] thesz написал у себя:
Для чистоты требуется 1) нормальный порядок упрощения (call-by-need или call-by-name, чтобы убрать зависимость от порядка вычисления) и 2) типы, чтобы ++i не пролезло в чистый код.
но, кажется, перепутал чистоту с хаскелем.

Ибо: 1) есть замечательный чистый функциональный язык Idris (даже проверяемо тотальный большей частью), в котором порядок вычислений строгий. Т.е. я бы заметил, что call-by-need требует чистоты, но чистота в общем случае не требует call-by-need.
То, что "есть классы программ, которые в нормальном порядке выразимы, в энергичном нет" - это правда, конечно, но к чистоте отношения не имеет.
Касательно 2) - бестиповое лямбда-исчисление тоже совершенно чистое, и для чистоты своей типов не требует. Чтобы ++i не пролезло в чистый код таки достаточно убрать из языка ++i и другие нечистоты.

Впрочем, без четкого определения чистоты все это довольно бессмысленное жонглирование. В частности, считать ли чистой функцию со свободными переменными.

Date: 2014-08-24 06:00 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Для реальных задач Idris я не советую, весь лоб в шишках. :) Он работает на маленьких задачках (я на нем делал кодогенератор и компилятор в разных проектах, это сотни строк на Идрисе и всего десятки килобайт данных). На данных побольше и долгих циклах вроде веб-сервера он не выживет по банальной причине: нет гарантированной оптимизации хвостовой рекурсии, и нет возможности написать цикл нерекурсивно. Т.е. даже просто досчитать до миллиона на нем может не получиться.

Побаловаться на маленьких задачках можно, благо язык маленький - туториал на полсотни страниц и обозримая стандартная библиотека. Документации по ней негусто (или даже вообще нет), приходится в исходники посматривать все время.

Из перечисленных вариантов для практики я бы выбрал Хаскель. Конкретный фреймворк не подскажу, сам не ориентируюсь.

Date: 2014-08-24 06:16 pm (UTC)
From: [identity profile] chaource.livejournal.com
Спасибо за совѣты! Вотъ Haskell/Yesod выглядитъ какъ такой добротный full-service framework, эдакой Haskell On Rails. Попробую на досугѣ.

Date: 2014-08-28 10:53 am (UTC)
From: [identity profile] nivanych.livejournal.com
> Для реальных задач Idris я не советую

А ты его трансляцию в джавоскрипт не пробовал, как оно?

Date: 2014-08-28 11:14 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Не, не пробовал. Только с дефолтным сишным бекэндом имел дело.

Profile

thedeemon: (Default)
Dmitry Popov

February 2026

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 9th, 2026 07:04 am
Powered by Dreamwidth Studios