Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2008-11-21

パッケージ名を使って関数名を短くする試み

| 21:55 | パッケージ名を使って関数名を短くする試み - わだばLisperになる を含むブックマーク はてなブックマーク - パッケージ名を使って関数名を短くする試み - わだばLisperになる

;; 動作
(map:car (f:x y z list x y z)
          '(1 2 3 4)
          '(a b c d)
          '(one two three four))

;=> ((1 A ONE) (2 B TWO) (3 C THREE) (4 D FOUR)) 

;; 定義
(defpackage :map (:use :cl)
  (:shadow :car)
  (:export :car))

(in-package :map)

(setf (symbol-function 'car) #'cl:mapcar)

(defpackage :f (:use :cl)
  (:export :x))

(in-package :f)

;; 無理矢理気味
(defmacro x (&rest args)
  (do ((a args (cdr a))
       (vars (list (intern "X")) (cons (car a) vars)))
      ((or (fboundp (car a))
           (endp a))
       `(lambda (,@(nreverse vars))
          ,a))))