2010/01/21

quoteされたリストとlist手続きで作ったリスト

あれ?

っと思った自分がにくい・・・。
(map (lambda (f)
       (f 5 5))
     '(+ - * /))

; *** ERROR: invalid application: (+ 5 5)
(map (lambda (f)
       (f 5 5))
     (list + - * /))


; gosh> (10 0 25 1)
気づけばGaucheをやり始めて1年が経ちました。なのに未だに全然書けないのは、そもそも書いてないからだろうなーと思います。何か作るようにしようと思います。  

ところで

上記の点にハマったのは、日付を「2010-01-21T01:25:23Z」の形式にしたいと思ったときにこういうコードを思い浮かべました。
(define date->gmt
  (lambda (now)
    (let ((pad0 (lambda (n)
                  (format #f "~2,,,'0,@a" n))))
      (let ((yyyy (date-year now))
            (MM (date-month now))
            (dd (date-day now))
            (hh (date-hour now))
            (mm (date-minute now))
            (ss (date-second now)))
        (string-append
         (string-join (list (number->string yyyy)(pad0 MM)(pad0 dd)) "-")
         (format #f "T~aZ"(string-join (list (pad0 hh)(pad0 mm)(pad0 ss)) ":")))))))
↑の箇所が「なんだかな・・・」だったので↓のように書いてみたわけです。特に良くなったとは思いませんけども。
(define pad0
  (lambda (n x)
    (format #f "~v,,,'0,@a" n x)))

(define date->gmt
  (lambda (date)
    (let ((g (lambda (ls dl)
               (string-join
                (map (lambda (f)
                       (pad0 2 (f date))) ls) dl))))
      (string-append (g (list date-year date-month date-day) "-")
                     (format #f "T~aZ"
                             (g (list date-hour date-minute date-second) ":"))))))
 
  プログラミングGauche

0 件のコメント:

コメントを投稿