@haskellru

Страница 1349 из 1551
kana
18.07.2018
21:58:28
чет у меня мозги поплыли при попытке самому реализовать

A64m
18.07.2018
22:19:16
вроде такого? http://www.cse.chalmers.se/edu/course/pfp/Papers/PMCJFP.pdf

но, сейчас, наверное, получше есть на эту тему

kana
18.07.2018
22:23:52
о, спасибо

Google
Pig
18.07.2018
22:41:28
Stack уже deprecated или ещё нет?

Dmitry
18.07.2018
23:14:08
Уже нет

Ilya
19.07.2018
00:49:02
А где почитать почему тайпчекер не делает бектрекинг для констрейнтов в инстансах тайпклассов?

Denis
19.07.2018
03:14:07
может кто вспомнить какой пейпер по корутинам на основе континуейшенов?
последняя глава https://themonadreader.files.wordpress.com/2011/10/issue19.pdf

Ilya
19.07.2018
05:57:10
Вопрос: а обилие частично определённых функций в стандартной библиотеке хаскеля это баг или фича?

Встречный вопрос, а что такое частичная функция?

Вот беру определение из хаскель вики

A partial function is a function that is not defined for all possible arguments of the specified type.

Так это и length значит частичная

Ведь она не определена на possible argument [1..]

по построению length вернёт значение, когда аргумент кончится

head - частичная. Потому что для некоторых значений аргумента не существует результата (вместо него exception)

жду определения

Google
Ilya
19.07.2018
05:57:14
"для некоторых значений аргумента не существует результата" верно и про length

Выход за пределы памяти, размера чисел, терпения программиста - не признаки частичности :)

а какие признаки?

короче кто что думает про то, как правильно определять "частичность" функции

Yuriy
19.07.2018
05:58:05
Ilya
19.07.2018
05:58:07
по-хорошему надо так, чтобы length под него не попадала

Aleksey
19.07.2018
05:58:16
length определена на всех значениях аргумента

Ilya
19.07.2018
05:58:28
length определена на всех значениях аргумента
нет определена на бесконечном списке

это тоже значение аргумента

Aleksey
19.07.2018
05:58:45
У списка ровно два значения: [] и (x:xs)

Ilya
19.07.2018
05:59:00
так, вот и другое определение уже пошло

Aleksey
19.07.2018
05:59:11
Оба эти значения обрабатываются в length

Ilya
19.07.2018
06:00:11
Оба эти значения обрабатываются в length
так значит какое твое определение?

Aleksey
19.07.2018
06:00:28
это тоже значение аргумента
Это не значение. Его генерация не остановится, поэтому "до length не дойдёт очередь"

Ilya
19.07.2018
06:00:37
обходит типа все варианты дерева АТД?

Yuriy
19.07.2018
06:00:42
по-хорошему надо так, чтобы length под него не попадала
не получится. она частичная. не выдумывай определение, возьми из учебника

Ilya
19.07.2018
06:00:55
ну я уже взял из хаскель вики

значит там неправильное

Google
Ilya
19.07.2018
06:01:14
я ж не говорю, что оно правильное

ну так дайте другое

Aleksey
19.07.2018
06:01:34
В length [1..] не length частичная

а [1..]

Yuriy
19.07.2018
06:01:57
а [1..]
разве это не значение?

Aleksey
19.07.2018
06:02:17
Нет

Это санк :)

Ilya
19.07.2018
06:02:23
@astynax ты уже 10 минут ходишь вокруг да около

способен дать определение или нет?

Aleksey
19.07.2018
06:02:36
что за наезд ваще?

Ilya
19.07.2018
06:02:37
чтобы можно было проверить, попадает length под него или нет

Aleksey
19.07.2018
06:02:48
Ты уже 10 минут выпендриваешься

Aleksey
19.07.2018
06:02:59
length по построению тотальная

Ilya
19.07.2018
06:03:02
понятно, подождём других участников :)

length по построению тотальная
то есть у тебя частичная == не тотальная? то есть матчит любой возможный аргумент, так?

что за наезд ваще?
я ж конструктива просто жду

Yuriy
19.07.2018
06:04:27
Это санк :)
значения только NF?

Это санк :)
1 : [1 ..] — а это тоже задумка?

Ilya
19.07.2018
06:07:42
пока небольшое затишье, приведу ещё одно определение частичной функции, в этот раз из матана

Aleksey
19.07.2018
06:08:08
В матане нет проблемы останова

Google
Ilya
19.07.2018
06:08:11
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.

ещё раз хочу отметить, что length и по этому определению тоже частичная

Aleksey
19.07.2018
06:08:51
length обрабатывает все возможные значения аргумента

рекурсивно

но каждый шаг рекурсии - не частичный

Алексей Ayaye :)
19.07.2018
06:09:27
рекурсивная функция, которая тупо зацикливается - частично определена?

Ilya
19.07.2018
06:09:40
но каждый шаг рекурсии - не частичный
ну я понял, короче ей нельзя подсунуть аргумент, который она не может заматчить? это твоё определение?

или как

Admin
ERROR: S client not available

Aleksey
19.07.2018
06:10:01
> ей нельзя подсунуть аргумент, который она не может заматчить да

в отличие от head, например

Ilya
19.07.2018
06:11:13
head2 :: [a] -> a head2 (x:xs) = x head2 [] = head2 []

head2 частичная или нет?

Aleksey
19.07.2018
06:11:45
Тут рекурсия без убывания аргумента. Это просто ошибка программиста :)

Pineapple
19.07.2018
06:12:20
Так тотальноть не про ошибки программиста

Aleksey
19.07.2018
06:12:45
У length аргумент убывает. Если аргумент конечен, то результат всегда будет.

Pineapple
19.07.2018
06:12:58
Length тотальна для клнечных списков

Ilya
19.07.2018
06:12:59
Тут рекурсия без убывания аргумента. Это просто ошибка программиста :)
ну так ты дал определение, head2 под него подходит, значит всё ок

или снова меняем определение, я не против

Google
Aleksey
19.07.2018
06:13:20
Я не давал определение ещё

Соответственно я его и не меняю

Меня устраивает опредедение из вики

Ilya
19.07.2018
06:14:35
Length тотальна для клнечных списков
ага, я тоже склоняюсь к тому, что это правильный ответ

Алексей Ayaye :)
19.07.2018
06:14:36
она по построению не возвращает результат :)
но ведь матчит любой аргумент

Aleksey
19.07.2018
06:14:39
Считать ли некорректно написанные рукурсивный функции частичными или нет - вопрос

Алексей Ayaye :)
19.07.2018
06:15:12
Считать ли некорректно написанные рукурсивный функции частичными или нет - вопрос
особенно если учесть существование проблемы останова )

Pineapple
19.07.2018
06:15:28
Что значит некорректно написанные функции?

Alexander
19.07.2018
06:15:53
у нас там проблема останова решена?

чтобы length тотальной сделать?

Aleksey
19.07.2018
06:16:07
При этом в хаскеле из за ленивости вполне можно писать полезные "неправильно рекурсивные" функции :) ones = 1 : ones

Алексей Ayaye :)
19.07.2018
06:17:04
f 1 = 1 f n | even n = f(n / 2) | otherwise = f (3*n+1) полностью определена?

Alexander
19.07.2018
06:17:39
Yuriy
19.07.2018
06:17:51
Окей, что мы даём на вход и ожидаем на выходе? можно считать по NF, length тотальная. по WHNF length частичная

Алексей Ayaye :)
19.07.2018
06:17:57
Aleksey
19.07.2018
06:17:58
а вот это как раз не частичная функция, внезапно
А я и не сказал, что она частичная нигде. Я сказал, что она "некорректно рекурсивная" :)

Ilya
19.07.2018
06:18:29
"некорректно рекурсивная" корекурсивная что ль

потому ones корекурсивна

Aleksey
19.07.2018
06:18:53
"нет базового случая и аргумент не убывает"

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