Влод
Да все, из командной строки запустил
ghci лучше как можно скорее начать осваивать (если ещё не начинал), так гораздо быстрее всё пойдёт
Sasha
ghci лучше как можно скорее начать осваивать (если ещё не начинал), так гораздо быстрее всё пойдёт
я чет не понял как в нем работать если честно(мой хаскель равен 3м часам)
Sasha
поэтому пишу и компилю в нотпаде, а запускаю черз командную строку
Влод
ну к примеру, пишешь что-нибудь в нотпаде, помнишь название функции которая тебе нужна но не помнишь в каком порядке она принимает аргументы > :t take Int -> [a] -> [a] проверяешь как она работает > take 3 "substring" "sub"
Alexander
:main в ghci же
Влод
ну или запускаешь ghci (твой файл) и проверяешь все свои функции, проверяешь тот же main пишешь :reload когда что-нибудь добавил в файл
Alexander
:r/:reload если перезагрузить если файл изменил в другом месте
Влод
:main в ghci же
кстати есть разница, если просто применить main?
Alexander
хз, я не пользую эту функцию обычно
Anonymous
Как в монады попроще въехать, чтобы побыстрее начать быдлокодить?
Alexander
быдлокодь без въезжания
Влод
не въезжай
Anonymous
Рофл
Alexander
монады просто средство связывания действий с эффектами. т.е. передача из однго в другое значение
Alexander
чего тут понимать
Alexander
а вот научиться применять и видеть, где использовать, это другое для этого как раз и надо быдлокодить
Alexander
т.е. методом демидовича набирать опыт
Влод
монады просто средство связывания действий с эффектами. т.е. передача из однго в другое значение
да ну. монады и без эффектов могут существовать. этим большинство туториалов по монадам страдают
Anonymous
А и, кстати, как предотвратить зацикливание, если напортачил?
Sasha
вопрос на вырост, сложно ввод вывод из файла сделать?
Anonymous
Есть какие-то инструменты?
Anonymous
Тайм-лимит, например
Alexander
@vlastachu очевидно, что ты не прав
Sasha
не
ок
igo
Как в монады попроще въехать, чтобы побыстрее начать быдлокодить?
посмотреть определение и реализации класса типов Monad, например: http://hackage.haskell.org/package/base-4.9.1.0/docs/src/GHC.Base.html#line-656
Alexander
@t1mee System.Timeout.timeout например
Alexander
^C
Alexander
@vlastachu все монады это инкапсуляция какого-либо эффекта в типе данных
Влод
@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 значит можно найти и смысл
Влод
Тогда уж интересно узнать что такое сайд эффекты
Alexander
я могу пересказать стью для как для dummies типа меня
Alexander
сейчас найду одно из старых определний если не потерял статью
Влод
я могу пересказать стью для как для dummies типа меня
забей. я могу сказать, что почитаю, а потом не почитаю и всё ок
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
Влод
ещё норм бы тогда объяснить что такое действия (которые связаны с эффектами через монады)