[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.lisp

Re: Is this gross?

William James

2/8/2015 6:44:00 PM

> ; -- in your utils file --
>
> (defmacro some-keys-value->hashtable (&rest keys-value-list)
> `(let ((hash (make-hash-table :test #'equal)))
> (loop for (ids . name) in ',keys-value-list
> do (dolist (id ids) (setf (gethash id hash) name)) )
> hash ))
>
> (defmacro some-keys-value->hashtable (&rest keys-value-list) `(let ((hash (make-hash-table :test #'equal))) (loop for (ids . name) in ',keys-value-list do (dolist (id ids) (setf (gethash id hash) name)) ) hash ))
>
>
> ; -- in your app file --
>
> (defparameter +frame-name-hash+
> (some-keys-value->hashtable (("COM" "COMM") . "Comment")
> (("TAL" "TALB") . "Album")
> (("TCM" "TCOM") . "Composer")
> (("TCO" "TCON") . "Genre")
> (("TEN" "TENC") . "Encoding program")
> (("TP1" "TPE1") . "Artist")
> (("TPA" "TPOS") . "Part of set")
> (("TRK" "TRCK") . "Track")
> (("TT2" "TIT2") . "Song")
> (("TYE" "TYER" "TDRC") . "Year") ))

Gauche Scheme:

(use srfi-42)
(define (some-keys-value->hashtable keys-value-list)
(define table (make-hash-table 'equal?))
(do-ec
(: x keys-value-list)
(: id (car x))
(hash-table-put! table id (cadr x)))
table)

(define frame-name-hash
(some-keys-value->hashtable '((("COM" "COMM") "Comment")
(("TAL" "TALB") "Album")
(("TCM" "TCOM") "Composer")
(("TCO" "TCON") "Genre")
(("TEN" "TENC") "Encoding program")
(("TP1" "TPE1") "Artist")
(("TPA" "TPOS") "Part of set")
(("TRK" "TRCK") "Track")
(("TT2" "TIT2") "Song")
(("TYE" "TYER" "TDRC") "Year"))))