Changeset 21825 in project


Ignore:
Timestamp:
12/05/10 23:48:49 (10 years ago)
Author:
Alan Post
Message:

genturfa'i: convert association list to hash for nunjavni memoization.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/genturfahi/trunk/morji.scm

    r21751 r21825  
    2929  (let ((rodamorji '()))
    3030    (values
    31       ;; delete the memoization cache.  This is called after
     31      ;; clear the memoization cache.  This is called after
    3232      ;; constructing the parser to free up memory.
    3333      ;;
     
    4242      ;;
    4343      (lambda (nunjavni)
    44         (let ((morji '()))
     44        (let ((morji (make-hash-table equal?)))
    4545          (define (morji-nunjavni . sumti)
    46             ;; update the cache with a new javni
    47             ;;
    48             (define (set-morji! sumti jalge)
    49               (set! morji (cons (cons sumti jalge) morji)))
    50 
    51             ;; we found a memoized rule
    52             ;;
    53             (define (semorji jalge)
    54               (cdr jalge))
    55 
    56             ;; we did not find a memoized rule.  Generate
    57             ;; the rule, store it in the cache, and return
    58             ;; it.
    59             ;;
    60             (define (nasemorji)
    61               (let ((jalge (apply nunjavni sumti)))
    62                 (set-morji! sumti jalge)
    63                 jalge))
    64 
    65             (cond ((assoc sumti morji) => semorji)
    66                   (else (nasemorji))))
     46            (hash-table-ref morji
     47                            sumti
     48                            (lambda ()
     49                              (let ((javni (apply nunjavni sumti)))
     50                                (hash-table-set! morji sumti javni)
     51                                javni))))
    6752
    6853          ;; register our cache with the global cache so
     
    7156          ;;
    7257          (set! rodamorji
    73             (cons (lambda () (set! morji '()))
     58            (cons (lambda () (hash-table-clear! morji))
    7459                  rodamorji))
    7560
Note: See TracChangeset for help on using the changeset viewer.