iota10分ぐらい、三角形10分ぐらいでやっつけた。 大したことはやってないし多分遅い。 (defun iota (to &optional (from 0) (step 1)) (do ((i from (incf i step)) (ns nil)) ((< to i) (nreverse ns)) (setf ns (cons i ns)))) (defun pas (n k) (if (or (= n 1) (= k 1) (= k n)) 1 (+ (pas (- n 1) (- k 1)) (pas (- n 1) k)))) (defun line (n) (mapcar #'(lambda (k) (pas n k)) (iota n 1))) (defun sankaku (n) (mapcar #'(lambda (n) (line n)) (iota n 1)))
by Olin Shivers Status This SRFI is currently in final status. Here is an explanation of each status that a SRFI can hold. To provide input on this SRFI, please send email to srfi-1 @nospamsrfi.schemers.org. To subscribe to the list, follow these instructions. You can access previous messages via the mailing list archive. Received: 1998-11-08 Draft: 1998-12-22--1999-03-09 Revised: several times Fi
id:eel3:20090307:1236401934 のCommon Lisp版の自作iotaにはSchemeっぽさが残っているというか、Common Lispっぽさが足りていないと思う。 Schemeは末尾再帰の最適化が仕様に含まれているけどCommon Lispでは含まれていない、というのは有名な話で、だから末尾再帰を最適化してループに展開して欲しい場合は処理系依存の機能に頼ることになる。 しかしそんな軟弱な態度じゃマズイだろう、ということでCommon Lispではループ用のマクロが多用される*1。 ということで、ループマクロの勉強を兼ねて書き直してみた。 まずはdotimes。iotaの第1引数はcountという名前だから、やはり繰り返す回数が大切なんだろうと考えて、dotimes。 ; dotimes 版その01 ; let が余分な感じに見える (defun iota (co
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く