あれ?
っと思った自分がにくい・・・。
(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) ":"))))))
0 件のコメント:
コメントを投稿