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-04-15


LISP1.5でL-99 (P03 K番目の要素)

| 19:00 | LISP1.5でL-99 (P03 K番目の要素) - わだばLisperになる を含むブックマーク はてなブックマーク - LISP1.5でL-99 (P03 K番目の要素) - わだばLisperになる

最初は<や>はLISPには存在していなくて、greaterp、lesspでした。

また、1+、1-は、add1、sub1でした。MacLISPや、Lispマシン位までは両方使えましたが、Common Lispで廃止されたようです。

;  FUNCTION   EVALQUOTE   HAS BEEN ENTERED, ARGUMENTS..
; ELEMENT-AT
;
; ((A B C D E) 3)

; END OF EVALQUOTE, VALUE IS ..
; C

DEFINE ((
(ELEMENT-AT (LAMBDA (LST K) 
              (COND ((NULL LST) () )
                    ((GREATERP 2 K) (CAR LST))
                    (T (ELEMENT-AT (CDR LST) (SUB1 K))))))
    ))

ELEMENT-AT((A B C D E) 3)

CodeReposデビュー

| 18:36 | CodeReposデビュー - わだばLisperになる を含むブックマーク はてなブックマーク - CodeReposデビュー - わだばLisperになる

なんとなく面白そうだったのでCodeReposデビューしてみた。

特に作るものがなかったので、xyzzyにdestructuring-bindがなかったことを思い出してSBCLから移植してみることに。

SBCLからの移植だと、思ったより芋蔓式に色々なマクロが必要になってしまった。

他に良いのはないかと思ってCADRのコードを眺めてみたところ、比較的コンパクトに纏まっていたので、それを移植。

30年前のコードだけど…。

移植といっても、エラーの書式をちょっと合せて、古いLisp関数を補助関数として加えただけ。

xyzzyのパッケージの扱いにちょっとはまった。

そして、fixdapのxyzzyプロジェクトにも参加してみることにした。