[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ShootOut] Hash2.scm



#!/usr/bin/env mzscheme -r

(require (lib "etc.ss"))

(define (main)
  (let* ([n (string->number (vector-ref argv 0))]
	 [hash1 (make-hash-table)]
	 [hash2 (make-hash-table)]
	 [seq (build-list 10000 (lambda (x) x))]
	 [nseq (build-list n (lambda (x) x))]
	 [zero (lambda () 0)])
    (for-each (lambda (item)
		(hash-table-put! hash1 (string->symbol (string-append "foo_"
(number->string item))) item))
	      seq)
    (for-each (lambda (item)
		(hash-table-for-each hash1 (lambda (key value)
					     (hash-table-put! hash2 key (+
(hash-table-get hash2 key zero)
	
value)))))
	      nseq)
    (printf "~s ~s ~s ~s" 
	    (hash-table-get hash1 (string->symbol "foo_1"))
	    (hash-table-get hash1 (string->symbol "foo_9999"))
	    (hash-table-get hash2 (string->symbol "foo_1"))
	    (hash-table-get hash2 (string->symbol "foo_9999")))))
	    

(main)

Bryn Keller
Senior Software Engineer
Jenkon
brk@jenkon.com