Phone Key Pad

30分プログラム、その745。anarchy golf - Phone Key Padをやってみました。
問題の背景がよく分かんないんですが、変換表に従ってアルファベットを数字に変換する問題らしいです。

使い方

gosh> (string->key-pad "Ruby")
"7829"

gosh> (string->key-pad "Scheme")
"724363"

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-
(use srfi-1)
(use srfi-13)

(define *key-pads*
  '((#\1 "1+")
    (#\2 "2ABCabc")
    (#\3 "3DEFdef")
    (#\4 "4GHIghi")
    (#\5 "5JKLjkl")
    (#\6 "6MNmn")
    (#\7 "7PRSprs")
    (#\8 "8TUVtuv")
    (#\9 "9WXYwxy")
    (#\* "*-")
    (#\0 "0OQZoqz")
    (#\# "#")))

(define (alpha->key-pad c)
  (any (lambda (key)
	 (if (string-index (second key) c)
	     (first key)
	     #f))
       *key-pads*))

(define (string->key-pad s)
  (string-map alpha->key-pad s))