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