🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.funkcyjne
2 messages
2 total messages Started by Krzysztof Garus Mon, 27 Jan 2003 09:51
unikanie cyklu referencji
#233
Author: 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
Re: unikanie cyklu referencji
#234
Author: Krzysztof Garus
Date: Mon, 27 Jan 2003 10:18
14 lines
1327 bytes
Świadek Krzysztof Garus zeznał:

[ ciach ]

Mam jeszcze 4 metode: Kazda wartosc ma wskaznik do rodzica lub NULL i
przy podlaczaniu jednej wartosci do drugiej sprawdzamy czy ich najstarsi
przodkowie sa rozni. To sie wydaje szybkie (struktury sa raczej plytkie)
i niezawodne.

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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads