Article View: pl.comp.lang.funkcyjne
Article #233unikanie cyklu referencji
From: Krzysztof Garus
Date: Mon, 27 Jan 2003 09:51
Date: Mon, 27 Jan 2003 09:51
43 lines
2371 bytes
2371 bytes
witam,
Pytanie co prawda nie dotyczy bezposrednio jezykow funkcyjnych, ale wiem
(z watkow o GC) ze sie orientujecie w temacie.
W swoim programie konfiguracje przechowuje w wartosciach prostych
(liczba calkowita, zmiennoprzecinkowa, string) jak i zlozonych (tablica
zwykla i asocjacyjna wartosci prostych lub zlozonych). Kazda z nich moze
byc uzywana w kilku miejscach w programie, stad licznik referencji.
Gotowy jezyk skryptowy rozszerzam o funkcje typu:
wez_korzen_konfiguracji() <- bo cala konfiguracja to jedena wielka
tablica asocjacyjna
wez_nty_element(tab, n)
wez_element_o_kluczu(tab, klucz)
Dzieki nim mozna sie dobrac dowolnie gleboko w strukture.
Chcialbym dorobic funkcje do tworzenia struktur, jak i ustawiania
pewnych elementow w tablicach. Jednak tu sie pojawia zagrozenie typu:
wart := wez_korzen_konfiguracji()
ustaw_nty_element(wez_korzen_konfiguracji(), 3, wart)
I mamy cykl.
Jak sobie z tym poradzic? Pisac odsmiecarke srednio mi sie podoba, a
moze daloby sie uniknac? Na razie mam 3 pomysly (gdzie kazdy ma wady):
1. Kazda wartosc ma znacznik informujacy czy jest elementem innej
wartosci
2. Funkcja ustaw_nty_element(tab, n, wart) sprawdza czy licznik
referencji wartosci "wart" wynosi 1
3. Kazda wartosc ma "poziom", poziom elementu tablicy = 1+poziom tablicy
Dobrze kombinuje? A moze wymyslono na to sposob?
bajcik
--
Krzysztof Garus <bajcik.kolos.math.uni.lodz@pl> Linux User 171721
Stronka: http://kolos.math.uni.lodz.pl/~bajcik/
Polecam: http://kolos.math.uni.lodz.pl/~bajcik/duskc.html
Technical Details
Message-ID:
<slrnb3a07s.ii9.bajcik@kolos.math.uni.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.man.lodz.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.man.lodz.pl!not-for-mail From: Krzysztof Garus <bajcik@kolos.math.uni.lodz.pl> Newsgroups: pl.comp.lang.funkcyjne Subject: unikanie cyklu referencji Date: Mon, 27 Jan 2003 09:51:04 +0000 (UTC) Organization: LODMAN - Metropolitan Area Network in LODZ, Poland Lines: 43 Message-ID: <slrnb3a07s.ii9.bajcik@kolos.math.uni.lodz.pl> NNTP-Posting-Host: kolos.math.uni.lodz.pl X-Trace: kujawiak.man.lodz.pl 1043661064 11283 212.191.65.6 (27 Jan 2003 09:51:04 GMT) X-Complaints-To: abuse@man.lodz.pl NNTP-Posting-Date: Mon, 27 Jan 2003 09:51:04 +0000 (UTC) User-Agent: slrn/0.9.7.4 (Linux) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit