@haskellru

Страница 1020 из 1551
Daniel
27.03.2018
08:21:13
переименование

kana
27.03.2018
08:21:16
...которые в лямбда-абстракции

isnullxbh
27.03.2018
08:21:32
Спасибо!

Yuriy
27.03.2018
08:37:55
Google
Yuriy
27.03.2018
08:38:35
бета — это подстановка выражения в тело

A64m
27.03.2018
08:45:15
@A64m_qb0 наверняка ты знаешь подскажи, пожалуйста, откуда взялся термин type class и есть ли его точное определение
тайпклассы так назывались в первой же статье где они описываются. https://people.csail.mit.edu/dnj/teaching/6898/papers/wadler88.pdf ну и это не какой-то там термин у которого может быть точное определение, это "фича", которая определяется правилами типизации и трансляцией в язык без этой фичи.

Даже SPJ в каких-то докладах говорил next Haskell will be strict, ибо слишком уж она непредсказуемая, ленивость эта
это же шутка. (правда, "пророчество" сбылось, есть же прагма language Strict которой никто не пользуется)

Artem
27.03.2018
08:48:02
A64m
27.03.2018
08:48:18
да особой не было, было несколько восторженных ожидателей, когда ее только обсуждать начали, а когда имплементировали, никто и не заметил

Нет, это не шутка. С ленивостью действительно есть проблемы.
допустим, но как это связано с тем, что "следующий хаскель будет строгим"?

Artem
27.03.2018
08:51:27
Это связано с тем что Идрис сделали строгим

A64m
27.03.2018
08:51:40
нет, не связано

(по словам его автора, по крайней мере)

Google
Leonid
27.03.2018
08:52:32
И вообще, строгости добавить проще чем ленивости

Oleg
27.03.2018
08:53:06
Если не ошибаюсь, строгость обусловлена простотой написания бэкендов во всё подряд

А часть функций, которые берёт на себя ленивость берёт тотальность с кодатой

Vitaly
27.03.2018
08:56:13
Herbert Valerio Riedel говорит, что следующий за 2.2 cabal будет 3.0 и там по умолчанию уже будет nix-style local build (https://github.com/haskell/cabal/issues/5074#issuecomment-360978451), ссылается при этом на проект для GSoC. Как считаете, это реально?

Alexander
27.03.2018
08:56:54
конечно реально

в cabal style

когда что-то работает, что-то нет, интерфейс для инопланетян

Artem
27.03.2018
08:57:16
И вообще, строгости добавить проще чем ленивости
Как раз наоборот. Для строгости нужны новые примитивы (seq), а для создания отложенного вычисления просто завернуть в лямбда-функуию с unit-аргументом. Примерно так + немного сахара в Скале

Alexander
27.03.2018
08:57:54
получится как в идрисе "ленивость"

Artem
27.03.2018
08:58:02
(по словам его автора, по крайней мере)
Я общался с автором и у меня другое впечатление сложилось

Artem
27.03.2018
08:58:14
Alexander
27.03.2018
08:58:16
покажите мне хоть один язык, в котором есть нормальная ленивость, а там уже и поговорим

что проще, а что нет :)

A64m
27.03.2018
08:59:05
Это связано с тем что Идрис сделали строгим
вот причина, которую называет сам автор > The original reason is not even anything to do with practical choice. It was just the way I wanted to do it at the time, having already implemented a lazy VM for an earlier project. https://www.reddit.com/r/haskell/comments/36s0ii/how_do_we_all_feel_about_laziness/crgwc6f/

Google
Leonid
27.03.2018
08:59:33
Покажите мне ЯП где я могу как в хаскеле понаписать любой ерунды в where и не боятся что вычеслю слишком много

Alexander
27.03.2018
08:59:36
вот reasoning для всяких исключений, тотальности, линейных типов - он проще со строгостью

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

максимум что будет всякие итераторы стримы и т.п.

что конечно хорошо, но немножко меньше

Artem
27.03.2018
09:01:07
Покажите мне ЯП где я могу как в хаскеле понаписать любой ерунды в where и не боятся что вычеслю слишком много
Это прекрасно и удобно, никто не спорит. Проблема в цене, которая за это заплачена: непредсказуемые затраты по памяти… а неиспользуемые байндинги, кстати, многие компилятора прекрасно выбрасывают. Конечно, это implementation-dependent, что хуже

Alexander
27.03.2018
09:01:23
они же не неиспользуемые

Artem
27.03.2018
09:01:27
A64m
27.03.2018
09:01:30
Herbert Valerio Riedel говорит, что следующий за 2.2 cabal будет 3.0 и там по умолчанию уже будет nix-style local build (https://github.com/haskell/cabal/issues/5074#issuecomment-360978451), ссылается при этом на проект для GSoC. Как считаете, это реально?
прямо скажем, это было реально уже годы назад, это просто было не кабалистский подход, отдать пользователю что-то недоделанное, а потом получать фидбек и допиливать

Leonid
27.03.2018
09:01:40
Alexander
27.03.2018
09:02:04
вот с непредсказуемыми я не знаю

Artem
27.03.2018
09:02:08
вот я про это да
Тогда определите что такое ерунда в where :)

Alexander
27.03.2018
09:02:10
в общем-то они считаются

@ulysses4ever все локальные переменные, которые используется в коде, но не вычисляются во всех ветках

Artem
27.03.2018
09:02:45
Никто не спорит, что первоклассная ленивость удобней, чем костыли, но костыли практичней

Leonid
27.03.2018
09:02:47
Тогда определите что такое ерунда в where :)
case foo of ... -> ... -> ... -> ... where ... ... ...

Alexander
27.03.2018
09:02:50
но я например не осилю посчитть

Imants
27.03.2018
09:03:03
как в Элис что ли?
Про Элис слышу впервые ?

Google
Alexander
27.03.2018
09:03:35
впрочем в строгом языке тоже не факт, что всегда осилю

A64m
27.03.2018
09:03:51
Про Элис слышу впервые ?
http://www.ps.uni-saarland.de/alice/manual/futures.html

Leonid
27.03.2018
09:04:11
Ленивость не практична. хаскель не практичен.

Artem
27.03.2018
09:04:45
все говорят что ленивость плохо, а мне норм.
Про плохо я не слышал, я слышал про практичней, потому что предсказуемее

A64m
27.03.2018
09:05:01
Artem
27.03.2018
09:05:12
Если вас (как меня например) не сильно волнует производительность, то, конечно, ленивость ок и очень удобна

Leonid
27.03.2018
09:05:17
Что мы тут вообще делаем все? У нас терапевтическая встреча клуба людей с Стокгольским синдромом?. Какой-то Фрейдистский фалос в голове мешает нам писать на практичных ЯП?

Alexander
27.03.2018
09:05:40
ой...

ну зачем так-то

: (

Alister
27.03.2018
09:05:48
нас раскрыли

пшшш

Alister
27.03.2018
09:06:01
*кидает дымовую шашку и и исчезаезт*

Alexander
27.03.2018
09:06:48
ну черт знает, я в haskell непредсказуемые тормоза и из-за ленивости и из-за строгости видел

Andrew
27.03.2018
09:07:04
Пора выходить из чата?

Alexander
27.03.2018
09:07:06
и в идрисе у меня была куча всего O(N^2) вместо O(N) т.к. он строгий

а переписывать и сильно усложнять код, чтобы он был O(N) не хотелось

Google
Alexander
27.03.2018
09:08:19
но то, что имея тип структуры нельзя сказать сколько она занимает в ленивом языке - может быть проблемой

A64m
27.03.2018
09:08:48
ФП в ленивом языке точно практичнее, чем в строгом Правда практичность ФП довольно сомнительна пока

Imants
27.03.2018
09:08:50
Есть уже, ! и force
Разве ! устрожает всю цепочку? Думал, только непосредственно вызываемую ф (первую в цепочке)..

Alexander
27.03.2018
09:09:39
! вычисляет то, перед чем оно стоит до WHNF

Artem
27.03.2018
09:09:46
и в идрисе у меня была куча всего O(N^2) вместо O(N) т.к. он строгий
Да, это изначальный и единственный аргумент за ленивость: вычисления лучше структурированы. Но есть оборотная сторона, которая перешивает для многих. Мне казалось, Саймон часто говорил, что эта фича получилась довольно противоречивой. Но искать лень

Alexander
27.03.2018
09:12:01
изначальный и единственный агрумент за строгость: програмисту кажется, что он лучше её понимает

причем понимает, т.к. учился на строгих яп

A64m
27.03.2018
09:12:42
ну, не только кажется, ведь он действительно учился на них

Alexander
27.03.2018
09:12:52
хотя не, изначальный, т.к. это проще написать

Alister
27.03.2018
09:12:55
я вот сейчас одному школьнику помогаю

он входит в программирование через хаскель

и лисп

скинул ему курсов и книжек, вроде учится

Alexander
27.03.2018
09:14:12
а нормальных книжек не то, чтобы много

A64m
27.03.2018
09:14:22
правда это не единственный и даже не главный аргумент решает будет язык ленивый или строгий фактически его имплементатор, потому главный аргумент за строгость: ее проще имплементировать

Alexander
27.03.2018
09:15:03
единственное когда я увидел проблему с ленивостью, это когда пытались определить семантику и понять что с linear-types делать

ленивость там 100500 радостей приносит, которые в строгом языке понятнее как решать

Alexander
27.03.2018
09:19:08
force вычисляет агрумент до NF всегда проходя его

evaluate . force все вычисление

но с другой стороны force даже по вычисленному пробежится, поэтому хорошо бы его в newtype Once запихивать

Dmitry
27.03.2018
09:20:32
"Его" -- вычисленное?

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