deep-cut

30分プログラム、その196。deep-cutを作ってみる。
id:Gemmaさんにcutはネストできないと教えてもらったので、自分で作ってみる。

ついでに、define-macroじゃなくてdefine-syntaxで作ろうとしたり、ネスト可能なcuteを作ろうとして挫折した。

使い方

gosh> (define g (deep-cut + 1 (* 2 <>)))

gosh> (g 3)
7

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-
;;
;; cut.scm - deep cut
;;
;; Copyright(C) 2007 by mzp
;; Author: MIZUNO Hiroki / mzpppp at gmail dot com
;; http://howdyworld.org
;;
;; Timestamp: 2007/12/02 20:29:05
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the same terms as Scheme itself.
;;
(define-macro (deep-cut . exp)
  `(lambda (<>) ,exp))

(define f (cut + 1 (* 2 <>)))      ;; error
(define g (deep-cut + 1 (* 2 <>))) ;; ok