Evgenii
Sasha
Sasha
поэтому пишу и компилю в нотпаде, а запускаю черз командную строку
Влод
ну к примеру, пишешь что-нибудь в нотпаде, помнишь название функции которая тебе нужна но не помнишь в каком порядке она принимает аргументы
> :t take
Int -> [a] -> [a]
проверяешь как она работает
> take 3 "substring"
"sub"
Alexander
:main в ghci же
Влод
ну или запускаешь ghci (твой файл)
и проверяешь все свои функции, проверяешь тот же main
пишешь :reload когда что-нибудь добавил в файл
Alexander
:r/:reload если перезагрузить если файл изменил в другом месте
Alexander
хз, я не пользую эту функцию обычно
Anonymous
Как в монады попроще въехать, чтобы побыстрее начать быдлокодить?
Alexander
быдлокодь без въезжания
Влод
не въезжай
Anonymous
Рофл
Alexander
монады просто средство связывания действий с эффектами. т.е. передача из однго в другое значение
Alexander
чего тут понимать
Alexander
а вот научиться применять и видеть, где использовать, это другое для этого как раз и надо быдлокодить
Alexander
т.е. методом демидовича набирать опыт
Anonymous
А и, кстати, как предотвратить зацикливание, если напортачил?
Sasha
вопрос на вырост, сложно ввод вывод из файла сделать?
Anonymous
Есть какие-то инструменты?
Влод
Anonymous
Тайм-лимит, например
Alexander
@vlastachu очевидно, что ты не прав
Sasha
Alexander
@t1mee System.Timeout.timeout например
Alexander
^C
Alexander
@vlastachu все монады это инкапсуляция какого-либо эффекта в типе данных
Влод
сайд
Alexander
речь идёт про побочные эффекты
Влод
и что является побочным эффектом для списка?
Alexander
давай определимся, знаком ли ты знаком ли ты со статьей Moggi "Computational lambda-calculus and monads" 1989 года
Alexander
что такое list monad?
Влод
Ну конечно же нет
Alexander
тогда давай не будем тратить время на споры, а ты её почитаешь, хотя бы вступление и 1-2 части
Alexander
а не, там примеров нету, за примерами к Вадлеру
Alexander
в общем List это инкапсуляция эффекта недетерминированных вычислений и это side эффект
Alexander
@t1mee а ты это не читай, это теоритические разборки ;)
igo
Anonymous
Та я пока на и stepik.org развлекаюсь, есть время до монад, экшели)
Alexander
@vlastachu то что монады это зачастью чистые вычисления, когда они вычисляются - это да
Anonymous
Кстати, об этом. Есть предложения, как через хвостовую функцию запилить: SeqA n = seqA (n-1) + seqA (n-2) - 2*seqA (n - 3)?)
Alexander
наверное нечестно будет решать задачу из курса, там вроде были какие-то задачи, с завязыванием узла, которые как подсказку использовать можно?
Anonymous
Так-то оно так, вот только даже дефолтный код без let и стражевых операторов требует запредельные ресурсы по времени
Anonymous
seqA :: Integer -> Integer
seqA n | n == 1 = 0
| n == 2 = 1
| n == 3 = 2
| n >= 4 = seqA (n - 1) + seqA (n - 2) - 2 * seqA (n - 3)
| otherwise = error "arg must be >= 1"
Anonymous
В оригинале форматирование ровное, для заметки)
Alexander
это не tailrec
Anonymous
Это - да)
Anonymous
Но мне нужно, чтобы хоть как-то работало
Anonymous
Для начала
Alexander
для кода есть markdown выделение три символа ` вначале и вконце кода
Alexander
переписать как tailrec проще, чем заставить этот вариант не жрать ресурсы
Alexander
@vlastachu ты пишешь что-то очень-очень длинное? ;(
Alexander
;) т.е.
Влод
Ну ладно, ок. В определенный момент моё развитие в плане хаскеля и теорката остановилось и вполне осознанно. Многие вещи я не понимаю при достаточных затратах времени на них. В этом плане ты можешь относится ко мне как к инвалиду к которому отсылать фундаментальную литературу будет излишним.
Но вот что наверное можно объяснить тут сразу на месте: монады существовали и без хаскеля. Они сразу подразумевали эффекты? А прочие штуки из теорката тоже чтоли под собой имеют интуитивную такую интерпретацию?
Когда мы определяем структуру данных и монаду над ней можно тут также красиво предугадать какой эффект она интерпретирует? Или есть конечное число возможных вариаций для построения хаскельных типов и они уже все удачно проинтерпретированы? (ну типа как мы добавим в Either ещё один конструктор и вроде бы ничего толком не поменялось)
Неоднозначность определения монады над типом никак не влияет на эту эффектную интерпретацию
Влод
как видишь
Влод
ну скинул так
Влод
там могут быть несвязные предложения
Влод
речь идёт про побочные эффекты
Влод
Влод
ещё вот это не укладывается
Влод
типа как у них конечно у всех сайд эффекты, но у IO совсем сайд
Alexander
да, монады сразу подразумевали эффекты (про теоркат не скажу, я в нём не силен); тут последовательноть обратная исторически была - есть эффект находим структуру; но про типы если можно написать инстанс Monad значит можно найти и смысл
Влод
Тогда уж интересно узнать что такое сайд эффекты
Vladislav
Alexander
я могу пересказать стью для как для dummies типа меня
Alexander
сейчас найду одно из старых определний если не потерял статью
Alexander
ну там в тройку предложений выйдет
Alexander
=)
Alexander
для умных это статью читать и объяснять мне где мой пересказ неверен
Sasha
The type signature for `head' lacks an accompanying binding
Sasha
в чем проблема
Влод
вообще если бы здесь потролить то норм отсылаться на лейбница про его монолог
Влод
Alexander
> Effects are a classification of computations independent of the ex- plicit inputs and outputs of those computations.
из Tate
Влод
ещё норм бы тогда объяснить что такое действия (которые связаны с эффектами через монады)