🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #233

unikanie cyklu referencji

#233
From: Krzysztof Garus
Date: Mon, 27 Jan 2003 09:51
43 lines
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-mail

Show 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