2010/8/11 Horace Dynamite <horace.dynam...@gmail.com> > # And now the the thing I can't figure out how to do, the programmer > creates a 2d hash, retaining the "values" column. > %CODE = ( A => { map { $CODE_CHARS{A}[$_] => $_ } 0..106 }, > B => { map { $CODE_CHARS{B}[$_] => $_ } 0..106 }, > C => { map { $CODE_CHARS{C}[$_] => $_ } 0..106 } ); >
Are you asking how to retain the index (i.e. the $_, what you called "values") along with the encodings? The amount of Perl code you showed did not do that (it just retains $_ without the encoding). Assuming you want to retain both the encoding and value "together", a *cons*will do: (define (.. lower higher) ;; shorthand for perl's N..M generator syntax (build-list (- (+ higher 1) lower) (lambda (n) (+ n lower)))) (define A (make-hash (map (lambda (value) (cons (list-ref 128-A value) ;; key ;; encoding + value *(cons (list-ref ENCODING n) value)*)) (.. 0 106)))) ;; (define B ...) ;; (define C ...) Then you just refer to the values... (define (encoding-ref hash key) (*car* (hash-ref hash key))) (define (value-ref hash key) (*cdr* (hash-ref hash key))) Then you have > (encoding-ref A #\G) 11010001000 > (value-ref A #\G) 39 Hope this is what you are looking for. Cheers, yc
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users