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-02-16

3つ以上の引数の不等号

| 17:56 | 3つ以上の引数の不等号 - わだばLisperになる を含むブックマーク はてなブックマーク - 3つ以上の引数の不等号 - わだばLisperになる

良さげなフレーズを集めるといっても経験豊富でもなんでもない私が集めるのは、なかなか無理があるのですが、まあ、とりあえず…。

今回も、なあんだ、というようなものですが、個人的には前置記法の特色が出てる気がして結構好きなものの一つです。

;; 1
(< 1 2 3 4 5 6 7)
;=> t

;; 2
(<= 2 x 3)(and (<= 2 x) (<= x 3))

(defun fib (n)
  (if (<= 0 n 1)
      n
      (+ (fib (1- n))
	 (fib (- n 2)))))(defun fib (n)
       (cond ((= 0 n) n)
	     ((= 1 n) n)
	     ('T (+ (fib (1- n))
		    (fib (- n 2))))))

;; 3
(= 1 x y)(and (= 1 x) (= 1 y))

ArcでL-99 (P12 ランレングス圧縮されたものを復元する)

| 17:23 | ArcでL-99 (P12 ランレングス圧縮されたものを復元する) - わだばLisperになる を含むブックマーク はてなブックマーク - ArcでL-99 (P12 ランレングス圧縮されたものを復元する) - わだばLisperになる

前回のP11は、圧縮するものでしたが、そのデータを復元するのがお題。

Arcでmake-listに相当するものが見当たらなかったので自作しました。一応、newstringからの類推で、newlistという名前に。

make-listは全然違う名前になって潜んでたりして…。

(def decode (lst)
  ((afn (lst acc)
	(if no.lst
	    rev.acc
	    (self cdr.lst
		  (cons (if (atom car.lst)
			    car.lst
			    (apply newlist car.lst))
			acc))))
   lst () ))

(def newlist (size (o elt nil))
  ((afn (cnt acc)
	(if (<= cnt 0)
	    acc
	    (self (- cnt 1) (cons elt acc))))
   size () ))

(decode '((4 a) b (2 c) (2 a) d (4 e)))
;=> ((a a a a) b (c c) (a a) d (e e e e))

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20080216