@haskellru

Страница 465 из 1551
Vasiliy
13.10.2017
19:19:48
её суть в том, что она на стеке сидит

да и любая, собственно, рекурсия происходит в стеке

хвостовая его не увеличивает

A64m
13.10.2017
19:20:47
@anarchostatist они не особо преближены, понятно что даже недо АлгТД и недо полиморфизм с недо тайпклассами лучше, чем како-нибудь плюсовое адище, но сравнивать с нормальным ФЯ это несерьезно

Google
illiatshurotshka❄️
13.10.2017
19:21:22
что значит "недо"?

A64m
13.10.2017
19:21:32
Vasiliy то, что надо как-то управлять памятью, которая в этой рекурсии выделяется

illiatshurotshka❄️
13.10.2017
19:21:57
они сделаны так, как надо сделать, чтобы не иметь использование памяти как у хаскеля

A64m
13.10.2017
19:22:13
потому и недо

Vasiliy
13.10.2017
19:22:21
для управления стеком есть операции push и pop

A64m
13.10.2017
19:22:29
я же не утверждаю, что они просто какие-то неосиляторы

это трейдофф

Vasiliy
13.10.2017
19:22:44
гц тут не нужен

illiatshurotshka❄️
13.10.2017
19:22:46
ну вообще поэтому они и не используют такие термины

A64m
13.10.2017
19:23:02
но никтобы и не делал языки типа хаскеля, если б можно было ничего не терять

речь про то, что в куче надо выделять

illiatshurotshka❄️
13.10.2017
19:23:51
это трейдофф
имо довольно важный для большинства приложений

A64m
13.10.2017
19:24:17
@anarchostatist я же не говорю, что это неважно и ненужно

Google
Vasiliy
13.10.2017
19:24:18
а выделение в куче и рекурсия - это ортогональные, как мне кажется, вещи

A64m
13.10.2017
19:24:40
я про то что нельзя говорить, что такой язык это полноценный ФЯ, высокоуровневый

A64m
13.10.2017
19:24:50
не совсем

illiatshurotshka❄️
13.10.2017
19:24:52
@anarchostatist я же не говорю, что это неважно и ненужно
ну ты говоришь что лучше использовать более высокоуровневые ЯП

Vasiliy
13.10.2017
19:25:08
впрочем, я не видел начала беседы, так что не совсем в контексте

? animufag ?
13.10.2017
19:25:12
про рекурсию в енумах а потом как-то странно на обычную рекурсию перешли

A64m
13.10.2017
19:25:19
там где это можно себе позволить - конечно лучше

illiatshurotshka❄️
13.10.2017
19:25:28
я говорил что он имеет эргономики приближенные к языкам ФП, до уровня который позволяет сохранить скорость

? animufag ?
13.10.2017
19:25:36
но поинт про рекурсию в енумах довольно познавательный

Vasiliy
13.10.2017
19:26:18
шо за рекурсия в енумах O_o

illiatshurotshka❄️
13.10.2017
19:26:35
в расте енумы это sum types

Vasiliy
13.10.2017
19:27:25
оригинальное название

illiatshurotshka❄️
13.10.2017
19:27:35
наверное чтобы проще цппшникам было

Vasiliy
13.10.2017
19:29:59
дык в цпп енумы - считай именованные константы

? animufag ?
13.10.2017
19:30:06
оригинальное название
ну это мелочи, во всех языках стараются по-своему назвать. типа сделать проще

Vasiliy
13.10.2017
19:30:10
с недавних пор засунутые в неймспейсы

illiatshurotshka❄️
13.10.2017
19:30:46
ну вообще енумы используются для создания tagged unions там

? animufag ?
13.10.2017
19:30:58
ну так забей. есть чуть чуть сходства и нормально. а потом на какой-нибудь главе в енумах поля появляются

Google
A64m
13.10.2017
19:31:22
так и в расте, наверное каждый конструктор енума тегируется константой

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

но все рвно в таком стиле со списками никто на расте писать не будет, так что не важно

illiatshurotshka❄️
13.10.2017
19:35:32
так и в расте, наверное каждый конструктор енума тегируется константой
значения енума не возвращают свое число, если это подразумевается

A64m
13.10.2017
19:35:55
да нет, не про это

я про то

но, наверное все-таки возвращают

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

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

illiatshurotshka❄️
13.10.2017
19:37:39
число можно получить только скастив в число

A64m
13.10.2017
19:39:53
ну для языка в котором типичная для ФЯ велью-семантика рантайм может тегировать указатель, там же абстрагировано то, что он по ссылке передается

illiatshurotshka❄️
13.10.2017
19:42:16
тегировать чем?

A64m
13.10.2017
19:43:40
тегом конструктора, если конструкторов у енума немного, как в гхц делается, например

но в языке без ГЦ это не нужно все равно

illiatshurotshka❄️
13.10.2017
19:44:19
да

раст так не делает

а вообще я не вижу проблемы имплементировать такое

A64m
13.10.2017
19:51:42
проблема тут в том, что рефы не часть имплементации АлгТД где-то за кадром, а наблюдаемая программистом сущность

но все эти хитрости из ФЯ в низкоуровневом языке не нужны, там до последнего страдают чтоб рефов было поменьше все равно

Google
kana
14.10.2017
04:54:58
Как я понял, суть в том, что управление памятью - не минус, но это делает код менее абстрактным. ФП код же настолько абстрактный, что в теории он может быть собран под такую теоретическую машину, у которой совсем другая модель памяти. И вот по факту хочется писать такой код, который будет максимально абстрактным, а работу с памятью и оптимизации перенести на компилятор. А вот я хочу описать рекурсивный адт, а в раст нужно еще какой бокс добавлять, чзх

Yuriy
14.10.2017
05:46:02
кто-то может рассуждать наоборот: а вот я хочу описать не жрущий память адт, а в Хаскелле ещё нужно какой-то UNBOX добавлять, чзх

третий раз за день в коде на c++ пишу pure вместо return. пятница...
но это же совсем разные вещи. pure/return у нас «заворачивает» значение, а return у них завершает процедуру

Vasiliy
14.10.2017
05:59:13
да, конечно, но под вечер пятницы воспалённый мозг начинает чудить :D

Никита
14.10.2017
15:27:58
Можно ли сделать так, чтоб stack install вместе с библиотекой скачивал все зависимости?

Alexander
14.10.2017
15:40:38
stack download

но для полиморфных полей все равно будет коробка

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

Maxim
14.10.2017
15:58:43
а посоветуйте, пожалуйста, что по хаскелю почитать после learn you a haskell for great good?

illiatshurotshka❄️
14.10.2017
15:59:55
http://haskellbook.com/ / bartosz milewski / the idris tutorial

Maxim
14.10.2017
16:01:21
http://haskellbook.com/ / bartosz milewski / the idris tutorial
первую нагугли, но че-т мне показалось, что она вместо lyahfgg, а не после

идрис пока незачем, я с хаскелем-то не до конца разобрался

illiatshurotshka❄️
14.10.2017
16:01:53
многие темы будут повторятся, но она намного глубже идет

Maxim
14.10.2017
16:02:48
http://haskellbook.com/ / bartosz milewski / the idris tutorial
а во втором пункте же просто автор, что у него читать?

illiatshurotshka❄️
14.10.2017
16:03:10
у него лекции и блог по теоркат

Тёма
14.10.2017
16:03:25
можно посмотреть его замечательные лекции на ютубе

?

Maxim
14.10.2017
16:04:11
у него лекции и блог по теоркат
да, у меня лежит его книжка по теории категорий, лол

Google
illiatshurotshka❄️
14.10.2017
16:04:22
книжка?

Maxim
14.10.2017
16:04:47
книжка?
category theory for programmers

illiatshurotshka❄️
14.10.2017
16:04:54
это не книга же

Maxim
14.10.2017
16:05:05
а что это?

вроде книжка

а есть что-нибудь почитать о тулинге в хаскеле? Типа там систем сборки, тестирования и всего такого

Alexander
14.10.2017
16:07:36
везде разбросано

система сборки одна Cabal, интерфейс наверное проще всего через stack

фреймворки тестирования это tasty и hspec самые известные

Maxim
14.10.2017
16:08:55
про hspec слышал вроде даже

Alexander
14.10.2017
16:08:58
само тестирование quickcheck hunit

в фреймворка хорошо общий интерфейс к ним

а ещё smallchexk

quickcheck - рандомизированная проверка инвариантов, small check полная до определенной глубины, hunit юнит тестирование

вместо описания кабал файла есть всякие hpack, но это к любителям

Maxim
14.10.2017
16:12:40
вместо описания кабал файла есть всякие hpack, но это к любителям
спасибо большое за такой подробный ответ!

kana
14.10.2017
16:25:16
это не книга же
У него есть видеолекции, а есть книжка

illiatshurotshka❄️
14.10.2017
16:25:34
он не публиковал книгу

он только блогпосты написал, а кто-то собрал их в книгу)

kana
14.10.2017
16:26:04
так а книга по твоему это что?

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