Size: a a a

2021 January 21

к

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

\elim это считай case-of

именно этот пример (ну и другие пруверы, где есть явное разделение индексов и параметров) начал убеждать меня в точке зрения что gadt это просто закрытые семейства, ну и конечно я мог сам себя в этом убедить в целях найти красивую унификацию этих штук
источник
2021 January 22

A

Asterix in Haskell Start
Do ghc follows tail call elimination? And does this make haskell faster and executes functions in constant memory space?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Asterix
Do ghc follows tail call elimination? And does this make haskell faster and executes functions in constant memory space?
Yes, it does! And yes, such functions are evaluating faster and using a constant space.
источник

A

Asterix in Haskell Start
Aleksei (astynax) Pirogov
Yes, it does! And yes, such functions are evaluating faster and using a constant space.
Smart & interesting from systems point of view
источник

JS

Jerzy Syrowiecki in Haskell Start
TCO has disadvantages too, for instance, you lose stack trace (if you had)
источник

A

Aragaer in Haskell Start
по-моему в sicp было утверждение, что "цикл это просто синтаксический сахар над рекурсией". В случае TCO это даже правда.
источник

Г

Григорий in Haskell Start
"синтаксическая соль"
источник

ХГ

Хаскелль Моисеевич Г... in Haskell Start
Aragaer
по-моему в sicp было утверждение, что "цикл это просто синтаксический сахар над рекурсией". В случае TCO это даже правда.
Как раз читаю этот момент...
источник

ВЩ

Взщз Щщщхш in Haskell Start
Если бы не было TCO, то практические программы вообще невозможно было бы писать, разве нет? Потому что бесконечный цикл не написать для машины с конечной памятью.
источник

A

Aragaer in Haskell Start
если бы не было TCO, нельзя было бы говорить, что можно написать произвольную программу. Но для некоторых конкретных реальных программ жить вполне можно.
Но да, если "цикл это сахар над рекурсией", то да.
источник

AA

A64m AL256m qn<co... in Haskell Start
можно писать практические программы без бесконечных циколов!
источник

A

Aragaer in Haskell Start
в кложе вот нету ТСО, но там рекурсия это сахар над циклом 8)
источник

Oℕ

Oleg ℕizhnik in Haskell Start
О, давно искал группу, где можно поговорить о языках, транслирующихся в код низкоуровневой машины без TCO
источник

Oℕ

Oleg ℕizhnik in Haskell Start
Так вот, про python...
источник
2021 January 24

AS

Artur Sult in Haskell Start
Привет, подскажите пожалуйста. Хочу создать тип с динамическими полями, как это сделать? Например, у меня будет список названий полей, например ['id', 'firstname', 'lastname'],  я из него хочу динамически получить тип User:
data User = User
   { id :: Id User
   , firstname :: Text
   , lastname :: Text
   }
Соответсвенно, если список будет другой, например [id, firstname, lastname, email, password], то и тип должен быть с соответствующими полями. В питоне сделать такое проще простого, а тут как?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
В Пайтоне у вас был бы словарь. Вот и в Haskell вы можете Map использовать для такого
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Есть ещё более сложные штуки вроде extensible records. Но тут уже нужно экспериментировать и смотреть какая из реализаций вам больше подойдёт.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
В конце концов всегда можно взять Value из aeson и кодировать наборы полей как object. Проще говоря, если ваши данные представимы в виде JSON, то и в виде Value они будут представимы.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Вот только вы не можете получить новый тип на лету. По крайней мере — обычный record.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Можно лишь "перейти на сторону динамической типизации" (использование Map или Value и будет своеобразной ДТ).
источник