М
а если серьезно, то сам подумываю о том, чтобы писать на богомерзком свифте, но в функциональной парадигме
М
под мобайл другого выбора не видно
Крылатый
A64m
никто не верит что статью читать не нужно - каждый проверяет сам!
Крылатый
М
есть три закона на руси...
A64m
не верить не пойми кому хорошо, когда речь идет о важных вопросах, в обсуждаемой ситуации, даже если зря поверите, все равно ничего не потеряете
М
расскажите лучше как мне научиться запускать любой хаскель проект из гитхаба, будь то stack или cabal, что почитать
М
или может ютуб курс есть хороший
М
интересно же что потом делать с выдаваемыми ошибками)
eahqzsr
М
проекту допустим года три
Anonymous
если либа поломанная, то предъявлять ошибки автору
A64m
ну автор может давно умер/женился.
для того чтоб приверсти старый проект в компилируемое стостояние чаще всего надо править версии зависимостей, ну и какие-то мелкие изменения в хаскеле, хорошая подборка которых есть https://ghc.haskell.org/trac/ghc/wiki/Migration
Евгений
Надо бы на 8.4 попробовать свой network-ninep замигрировать
кана
может кто вспомнить какой пейпер по корутинам на основе континуейшенов?
кана
чет у меня мозги поплыли при попытке самому реализовать
A64m
вроде такого? http://www.cse.chalmers.se/edu/course/pfp/Papers/PMCJFP.pdf
A64m
но, сейчас, наверное, получше есть на эту тему
кана
о, спасибо
Кабачок
Stack уже deprecated или ещё нет?
Dmitry
Уже нет
Ilya
А где почитать почему тайпчекер не делает бектрекинг для констрейнтов в инстансах тайпклассов?
Ilya
Вопрос: а обилие частично определённых функций в стандартной библиотеке хаскеля это баг или фича?
Ilya
Встречный вопрос, а что такое частичная функция?
Ilya
Вот беру определение из хаскель вики
Ilya
A partial function is a function that is not defined for all possible arguments of the specified type.
Ilya
Так это и length значит частичная
Ilya
Ведь она не определена на possible argument [1..]
Ilya
по построению length вернёт значение, когда аргумент кончится
Ilya
head - частичная. Потому что для некоторых значений аргумента не существует результата (вместо него exception)
Ilya
жду определения
Ilya
"для некоторых значений аргумента не существует результата" верно и про length
Ilya
Выход за пределы памяти, размера чисел, терпения программиста - не признаки частичности :)
Ilya
а какие признаки?
Ilya
короче кто что думает про то, как правильно определять "частичность" функции
Cheese
Ilya
по-хорошему надо так, чтобы length под него не попадала
Aleksei (astynax)
length определена на всех значениях аргумента
Ilya
Ilya
это тоже значение аргумента
Aleksei (astynax)
У списка ровно два значения: [] и (x:xs)
Ilya
так, вот и другое определение уже пошло
Aleksei (astynax)
Оба эти значения обрабатываются в length
Cheese
Ilya
Aleksei (astynax)
это тоже значение аргумента
Это не значение. Его генерация не остановится, поэтому "до length не дойдёт очередь"
Ilya
обходит типа все варианты дерева АТД?
Ilya
Ilya
ну я уже взял из хаскель вики
Ilya
значит там неправильное
Ilya
я ж не говорю, что оно правильное
Ilya
ну так дайте другое
Aleksei (astynax)
В length [1..] не length частичная
Aleksei (astynax)
а [1..]
Cheese
а [1..]
разве это не значение?
Aleksei (astynax)
Нет
Aleksei (astynax)
Это санк :)
Ilya
@astynax ты уже 10 минут ходишь вокруг да около
Ilya
способен дать определение или нет?
Aleksei (astynax)
что за наезд ваще?
Ilya
чтобы можно было проверить, попадает length под него или нет
Aleksei (astynax)
Ты уже 10 минут выпендриваешься
Aleksei (astynax)
length по построению тотальная
Ilya
понятно, подождём других участников :)
Ilya
пока небольшое затишье, приведу ещё одно определение частичной функции, в этот раз из матана
Aleksei (astynax)
В матане нет проблемы останова
Ilya
In mathematics, a partial function from X to Y (sometimes written as f: X ↛ Y or f: X ⇸ Y) is a function f: X ′ → Y, for some proper subset X ′ of X. It generalizes the concept of a function f: X → Y by not forcing f to map every element of X to an element of Y (only some proper subset X ′ of X). If X ′ = X, then f is called a total function and is equivalent to a function.
Ilya
ещё раз хочу отметить, что length и по этому определению тоже частичная
Aleksei (astynax)
length обрабатывает все возможные значения аргумента
Aleksei (astynax)
рекурсивно
Aleksei (astynax)
но каждый шаг рекурсии - не частичный
Алексей ayaye :)
рекурсивная функция, которая тупо зацикливается - частично определена?