@haskellru

Страница 226 из 1551
Alexander
05.03.2017
19:38:23
=)

для умных это статью читать и объяснять мне где мой пересказ неверен

Sasha
05.03.2017
19:39:17
The type signature for `head' lacks an accompanying binding

в чем проблема

Google
? animufag ?
05.03.2017
19:40:01
вообще если бы здесь потролить то норм отсылаться на лейбница про его монолог

Alexander
05.03.2017
19:40:40
> Effects are a classification of computations independent of the ex- plicit inputs and outputs of those computations. из Tate

? animufag ?
05.03.2017
19:41:08
ещё норм бы тогда объяснить что такое действия (которые связаны с эффектами через монады)

Alexander
05.03.2017
19:41:12
очень сложное определение если честно, но самое формальное из попсовых статей

в остальных они чуть ли не перечислением даны

в Moggi было так, есть фунции a -> b (с категорией и т.д.), есть эффекты, нечно что не выражается этой категорией a \upper{t}-> b

? animufag ?
05.03.2017
19:42:49
> Effects are a classification of computations independent of the ex- plicit inputs and outputs of those computations. из Tate
не зависит от явных инпутов и аутпутов. ну фиг знает какая под этим интуиция. f _ = 1 это эффект?

Alexander
05.03.2017
19:43:01
нет, зависит от результата

Владислав
05.03.2017
19:43:12
Стражевые операторы внутри let юзабельны?

Alexander
05.03.2017
19:43:38
a \upper^t -> b - не образует категорию и все плохо

поэтому мы вводим типа данных который "capture" эффект, и получаем a -> M b

где у нас есть известные M для Maybe, List, Cont

Google
Alexander
05.03.2017
19:45:06
далее, нужно нам как-то чистые фукнции лифтить в такое, те. ?? :: (a -> b) -> M a -> M b обана этож функтор!

а потом надо объединять 2 функции с эффектами

можно использовать fmap, тгда будет a:: M a, f :: a -> M b, fmap f a :: M (M b) и что же делать! у нас nested datatype

а нужно ?? :: M (M b) -> M b

а мы умные мы знаем ТК это ж join

и значит чтобы передать значения из одного действия с эффектами в другое - нужн monad

а дальше куча аккуратной математики, чтобы это доказать и вывести

но кратного пересказа более чем достаточно для практики

@t1mee а зачем?

? animufag ?
05.03.2017
19:48:40
Ладно ещё раз попытаюсь

Alexander
05.03.2017
19:48:45
т.е. даже этот пересказ не нужен и без него можно жить

? animufag ?
05.03.2017
19:49:22
Не могло ли выйти так что эффекты удачно (По Божьей Милости) оказались выражены в терминах монад

Alexander
05.03.2017
19:49:28
@t1mee там вроде на лекции была задача для факториала или фибонначи через узел

? animufag ?
05.03.2017
19:49:34
и это никак не влияет на сами монады

Владислав
05.03.2017
19:49:41
Так я их изи сделал

Проблемс в том, что тут не одна, а n*3 рекурсии

Alexander
05.03.2017
19:49:58
код не покажешь, может проще будет про это подсказать

Владислав
05.03.2017
19:50:10
Для каждой аккумулятор пилить что ли?

Alexander
05.03.2017
19:50:31
на лекции fib через zipWith было?

Владислав
05.03.2017
19:50:38
Боюсь, у тебя кровь из глаз пойдет)

Google
? animufag ?
05.03.2017
19:50:42
то есть как мы считаем похожесть смысла слов через вектора, но при этом линал живёт сам по себе

Владислав
05.03.2017
19:50:52
fibonacci :: Integer -> Integer fibonacci n | n < 0 = mhelper n | n > 0 = helper 1 0 n | otherwise = 0 helper :: Integer -> Integer -> Integer -> Integer helper acc x 1 = acc helper acc x y = helper (x+acc) acc (y-1) mhelper :: Integer -> Integer mhelper (-1) = 1 mhelper y = (-1)^(1-y) * fibonacci (-y)

Этот то робит

? animufag ?
05.03.2017
19:51:10
и таким образом (если моя догадка верна) нельзя сказать, что монады это эффекты

Alexander
05.03.2017
19:51:38
@vlastachu так и есть, на мой взгляд, ты все правильно говоришь

? animufag ?
05.03.2017
19:51:45
но можно сказать, что монады в том числе ещё и эффектами являются

Alexander
05.03.2017
19:51:50
ок, если я скажу не эффеты, а computation context

прозе будет?

melancholiac
05.03.2017
19:52:02
Для каждой аккумулятор пилить что ли?
крч дам совет пиши на бумажке пару вызовов потом найди хитровыебанную закономерность как менять все 3 аккамулятора между вызовами

? animufag ?
05.03.2017
19:52:08
компьютейшн тут тоже непричём

Alexander
05.03.2017
19:52:17
ну монады не являются эффектами, это алгебраические структуры, которые позволяют композить эффекты, тогда уж

? animufag ?
05.03.2017
19:52:20
математика она такая аморфная

масса

Владислав
05.03.2017
19:52:47
Alexander
05.03.2017
19:52:52
это средство имея m (m a) получить m a

я ни для fib ни для этой задачи не делал аккумулятор

Alexander
05.03.2017
19:53:29
если посмотреть в оригинальный текст Moggi (как я только что сделал), то там она все время приводит список проблем, для которых монады оказываются пиздатыми

? animufag ?
05.03.2017
19:53:35
скорей всего мой препод по лингвистике сказал бы что вы процессист и привыкли думать что вся семантика это только вычисления (опять же если все предыдущие догадки были верны)

Alexander
05.03.2017
19:53:54
считаешь ли ты m типом данных инкапсулирующих эффект или computational context или бурито - не суть важно

Alexander
05.03.2017
19:53:57
и сайд-эффекты - это только одни из них. Например нондетерминизм он упоминает наряду с сайд-эффектами

Google
Alexander
05.03.2017
19:54:24
это один из сайд-эффектов

Alexander
05.03.2017
19:54:36
вопрос терминологии, как я уже сказал

moggi их разделяет везде

https://gyazo.com/aa01987a1dd5d58fb1af285e7db296fb

https://gyazo.com/274f709bdade144371f2e1a6b5f5eaaa

и т.д

Alexander
05.03.2017
19:57:31
ok

? animufag ?
05.03.2017
19:57:57
2017й год а в хаскельных конфах всё ещё монады обсуждают

Alexander
05.03.2017
19:58:06
так ты и начал вроде?

? animufag ?
05.03.2017
19:58:16
ну да)

Alexander
05.03.2017
19:58:21
с другой стороны другие не разделяют

Sasha
05.03.2017
19:58:40
evenSum :: [Integer] -> Integer evenSum l = accumSum 0 l accumSum n l = if l == [] then n else let x = head l xs = tail l in if even x then accumSum (n+x) xs else accumSum n xs main = do evenSum [1,2,3,4,5] Couldn't match expected type `IO t0' with actual type `Integer'

Alexander
05.03.2017
19:58:46
я сразу сказал, что это все не важно, и посоветовал человеку не читать это

компилятор говорит, что у evenSum тип не IO a

если ты хочешь вывести на экран, наверное, нужно это явно сказать, сказав print $ eventSum [1..5]

Евгений
05.03.2017
20:01:07
> Effects are a classification of computations independent of the ex- plicit inputs and outputs of those computations. из Tate
Тогда правильная абстракция для эффектов -- стрелки

? animufag ?
05.03.2017
20:01:33
Ну короче объясню мою простую идею. (Новичок спросит) Что такое монады? трататата ЭФФЕКТЫ трататата... А ок (для себя решил, что штука которая намертво прикручена к IO и поэтому сделали для неё do нотация ведь как бы в другом виде оно и не надо)

Владислав
05.03.2017
20:02:07
Я умру от спида, если в теле функции, где я вставил хелпер-функцию я применю саму эту функцию в теле хелпера?

Евгений
05.03.2017
20:02:18
Тогда правильная абстракция для эффектов -- стрелки
Конечно на практике я не видел ни одной полезной стрелки, которая не редуцировалась бы до монады, но в теории они не изоморфны

Google
? animufag ?
05.03.2017
20:02:37
Ну и как бы я это объяснил: забей (ну и попросил бы объяснить если он сам разберётся)

Alexander
05.03.2017
20:02:54
foo n = xs !! n where xs = 0:1:2:zipWith (+) (tail xs) (zipWith (\x y -> x - 2*y) (tail (tail xs)) (tail (tail (tail xs)))

Sasha
05.03.2017
20:06:27
evenSum :: [Integer] -> Integer evenSum l = accumSum 0 l accumSum n l = if l == [] then n else let x = head l xs = tail l in if even x then accumSum (n+x) xs else accumSum n xs main = do evenSum [1,2,3,4,5] Couldn't match expected type `IO t0' with actual type `Integer'
может кто вообще объяснить что здесь происходит? evenSum принимает массив(лист?) интов и возвращает инт, а дальше? я не про то, что делает прога, а про то что означает каждый пункт

Alexander
05.03.2017
20:08:38
гораздо эффективнее если ты будешь задавать вопросы по одному максимально конкретные, так то конечно объяснят, но для понимания это хуже будет

Владислав
05.03.2017
20:09:05
лол

Суммирует эелементы списка, но это не точно

? animufag ?
05.03.2017
20:10:16
лол
неуместно

Владислав
05.03.2017
20:10:17
Не помню, что делает even

Alexander
05.03.2017
20:10:18
@t1mee про foo n это тебе программа кстати

even возвращает True если число четное

Владислав
05.03.2017
20:10:53
неуместно
Сейчас бы смех над иронией был неуместен

? animufag ?
05.03.2017
20:12:02
Сейчас бы смех над иронией был неуместен
@qnikst дал дельный совет. не вижу иронии

а или это выше по диалогу нужно смотреть?

Alexander
05.03.2017
20:13:00
код суммирует четные числа

Sasha
05.03.2017
20:13:27
ок, evenSum :: определяем тип функции, дальше говорим, что even принимает l и возвращает accumSum, accumSum в свою очередь принимает 2 аргумента и мы не определяем ее тип тк он не особо важен, правильно?

Alexander
05.03.2017
20:13:40
но он совершенно неидеоматичен..

Владислав
05.03.2017
20:13:42
а или это выше по диалогу нужно смотреть?
Чел скинул код, говорит, некомпилит. Потом спустя минут 10 спрашивает, что код делает, на что ему и указали. По-моему это забавно

Alexander
05.03.2017
20:14:22
тип не указали, т.к. автор ленивая сволочь (извините) а компилятор выведет тип сам

обычно принято для top-level деклараций писать тип

т.к. это проще читать минимум

Sasha
05.03.2017
20:15:41
а почему мы пишем evenSum l, а не evenSum [l]

Страница 226 из 1551