Size: a a a

2021 March 12

AV

Andrey Vlasov in ФП
Paveλ M
data LinkedList a = Node a (LinkedList a) | End 
   deriving Show

main =
   let linkedList = Node 5 End in
       putStrLn $ show linkedList
Тут же нет цикла
источник

PM

Paveλ M in ФП
Andrey Vlasov
Тут же нет цикла
ну вот с циклом
источник

PM

Paveλ M in ФП
data LinkedList a = Node a (LinkedList a) | End 
   deriving Show

main =
   let linkedList = Node 5 (Node 4 (Node 3 (Node 2 (Node 1 End)))) in
       putStrLn $ show linkedList
источник

PM

Paveλ M in ФП
если вы об этом
источник

PM

Paveλ M in ФП
не совсем понятен вопрос
источник

AV

Andrey Vlasov in ФП
Paveλ M
а почему нет?
Потому что я не могу придумать пример. У меня складывается ощущение, что это невозможно, потому что тогда нужно, чтобы B существовал на момент создания A и наоборот
источник

PM

Paveλ M in ФП
Andrey Vlasov
Потому что я не могу придумать пример. У меня складывается ощущение, что это невозможно, потому что тогда нужно, чтобы B существовал на момент создания A и наоборот
ну если вы о связных списках, то они не только возможны в функциональном мире, но и очень широко используются
источник

AV

Andrey Vlasov in ФП
Paveλ M
data LinkedList a = Node a (LinkedList a) | End 
   deriving Show

main =
   let linkedList = Node 5 (Node 4 (Node 3 (Node 2 (Node 1 End)))) in
       putStrLn $ show linkedList
Я не вижу здесь цикла
5 -> 4 -> 3 -> 2 -> End
Я хочу, условно, односвязный список, по которому можно бесконечно итерироваться
источник

AV

Andrey Vlasov in ФП
В Расте с мутабельностью цикл сделать можно
https://doc.rust-lang.org/beta/book/ch15-06-reference-cycles.html
источник

PM

Paveλ M in ФП
Andrey Vlasov
Я не вижу здесь цикла
5 -> 4 -> 3 -> 2 -> End
Я хочу, условно, односвязный список, по которому можно бесконечно итерироваться
элементы должны повторяться?
источник

PM

Paveλ M in ФП
если да, то цикл можно создать.. ф-цией cycle
источник

AV

Andrey Vlasov in ФП
Paveλ M
элементы должны повторяться?
Я не знаю, как объяснить понятнее, чем "чтобы объект A ссылался на объект B, а B на A"
источник

PM

Paveλ M in ФП
cycle [1,2,3,4,5] даст вам 1 -> 2 -> 3 -> 4 -> 5 -> 1 -> 2 -> 3 -> 4 -> 5 -> 1 ...`
источник

AG

Alex Gryzlov in ФП
Andrey Vlasov
Можно ли как-то в языке с иммутабельностью создать цикл ссылок? Чтобы объект A ссылался на объект B, а B на A?
источник

AV

Andrey Vlasov in ФП
Спасибо, похоже на то
источник

JS

Jerzy Syrowiecki in ФП
Andrey Vlasov
Можно ли как-то в языке с иммутабельностью создать цикл ссылок? Чтобы объект A ссылался на объект B, а B на A?
да, можно с помощью лени

> let a = 1 : b; b = 2 : a in take 10 a
[1,2,1,2,1,2,1,2,1,2]
источник

JS

Jerzy Syrowiecki in ФП
Paveλ M
не совсем понятен вопрос
цикл в графе ссылок между объектами
источник

AV

Andrey Vlasov in ФП
Jerzy Syrowiecki
да, можно с помощью лени

> let a = 1 : b; b = 2 : a in take 10 a
[1,2,1,2,1,2,1,2,1,2]
Сильно. Не знал, то хаскель так разрешает
источник

JS

Jerzy Syrowiecki in ФП
Andrey Vlasov
Сильно. Не знал, то хаскель так разрешает
любой язык с ленью разрешает. без лени в языке можно эмулировать как-нибудь
источник

AV

Andrey Vlasov in ФП
Jerzy Syrowiecki
любой язык с ленью разрешает. без лени в языке можно эмулировать как-нибудь
Тут же не просто лень, в примере переменная b используется до инициализации. Или это тоже лень?
источник