Re[37]: Публичное утверждение
От: Трурль  
Дата: 17.10.05 13:30
Оценка:
Здравствуйте, Трурль, Вы писали:

Т> На Haskell — надо постараться.


Вот идея
type Matrix= Array Int (Array Int Double)
type State = (Matrix,Matrix,Double,Int,Int,Int)

get_i (m,n,d,i,j,k) = i
set_i (m,n,d,i,j,k) i' = (m,n,d,i',j,k)
...
get_mij (m,n,d,i,j,k) = m!i!j
set_mij (m,n,d,i,j,k) x = (m//[(i, m!i//[(j,m!i!j)]) ],n,d,i,j,k)
...
Re[34]: Публичное утверждение
От: Cyberax Марс  
Дата: 18.10.05 15:26
Оценка: 18 (1)
Сергей Губанов wrote:

> C>>Невозможность создания удобных типов с эстафетным владением — это

> вообще минус Оберона.
> К>А уж с эстафетной концевой рекурсией... Ах мечты мечты.
> А что такое "тип с эстафетным владением" и "эстафетная концевая
> рекурсия"?

В Обероне нет политик владения как таковых (так как это язык с
автоматическим управлением памятью и без нормальной семантики
автоматических объектов), но можно выделить два типа владения:
разделяемое и монопольное.

Разделяемое владение — это объекты в куче, они существуют пока на них
есть ссылки с корней и каждая ссылка является "владеющей".

Монопольное владение — это value-типы. Они живут ровно до того времени,
пока не умрет их владелец (объект или стековый фрейм).

В эстафетной политики владения время жизни объекта определяется временем
жизни владельца, но владелец может меняться. В Обероне это могло бы быть
реализовано так:
//a и b - это value-типы
a:=b; //Обычное копирование. После него a=b.

b:=c;
a<=b; //Перемещение, 'a' равно 'c', но b - пусто.

То есть при эстафетной передаче не происходит реального копирования.
Наличие родного эстафетного типа даст оптимизирующему компилятору
множество возможнестей оптимизации (в частности, здесь можно было бы
сразу написать a:=c).

> Что такое просто концевая рекурсия это я понимаю, а эстафетная?


Оптимизация при которой не происходит ненужного копирования объектов при
концевой рекурсии.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[33]: Публичное утверждение
От: Cyberax Марс  
Дата: 18.10.05 15:46
Оценка:
Кодт wrote:

> На самом деле, эстафетное владение в Обероне (равно как в любом языке

> со сборкой мусора) — это раз плюнуть.
> POINTER TO ARRAY OF ARRAY OF REAL — и всё.

Это неинтересно и неспортивно — получается обычный GC-объект со всеми
недостатками.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[27]: Публичное утверждение
От: pvgoran Россия  
Дата: 24.10.05 07:50
Оценка:
Здравствуйте, Владик, Вы писали:

C>>Надо учиться с функциональных языков — хорошо мозги прочищает.


В>Вот в этом не уверен. Все-таки человеку свойственна итерация А для последующего прочищения мозгов — да, самое то


Дык, если изначально это не сделать, то большинству после освоения императивного подхода будет просто лень изучать что-то другое...
... << RSDN@Home 1.1.4 stable rev. 510>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.