Size: a a a

2021 March 05

O

Ortofax in Haskell
на бесконечную глубину
источник

O

Ortofax in Haskell
ну ладно, создать, получается, можно, это будет ссылка на незавершающееся вычисление
источник

к

кана in Haskell
так, ок, чем это будет отличаться от

struct X { X *x };
X *x = new X { x = x };
источник

к

кана in Haskell
псевдосинтаксис, но смысл думаю понятен
источник

O

Ortofax in Haskell
тем, что с x здесь можно что-то сделать
источник

O

Ortofax in Haskell
можно даже лучше: newtype X = X X - эта штука изоморфна data X и имеет лишь одно значение, если это можно так назвать - undefined
источник

к

кана in Haskell
не ну это не то же самое
источник

к

кана in Haskell
data X даже с ! не анбокснутый
источник

к

кана in Haskell
там хранится ссылка на X внутри
источник

O

Ortofax in Haskell
это так
источник

O

Ortofax in Haskell
внутри X, определённого через data, живут два разных undefined
источник

O

Ortofax in Haskell
но они, получается, изоморфны?
источник

O

Ortofax in Haskell
приглашаются знатоки ТК и теории типов
источник

к

кана in Haskell
Ortofax
тем, что с x здесь можно что-то сделать
не понимаю этого сообщения
источник

к

кана in Haskell
в примере с struct валидное строгое бесконечное значение, которое не уйдет в бесконечную рекурсию

почему это не то же самое, что и data X = X !X
источник

O

Ortofax in Haskell
struct X { X *x }; X *x = new X { x = x };
эта штука эквивалентна
data X = X X
если допустимо X *x = null
источник

O

Ortofax in Haskell
для неё можно построить значение за конечное время
источник

O

Ortofax in Haskell
точнее можно построить whnf за конечное время, если я правильно понимаю
источник

O

Ortofax in Haskell
стрим целиком нельзя построить за конечное время, однако whnf можно
источник

к

кана in Haskell
Ortofax
struct X { X *x }; X *x = new X { x = x };
эта штука эквивалентна
data X = X X
если допустимо X *x = null
ну смотри, тут значение строгое (предположим что у нас нет null)?
источник