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-03-11

繰り返し構文からみる自分のコーディングスタイル (2)

| 17:22 | 繰り返し構文からみる自分のコーディングスタイル (2) - わだばLisperになる を含むブックマーク はてなブックマーク - 繰り返し構文からみる自分のコーディングスタイル (2) - わだばLisperになる

前回反響が少しでもあるとは全く考えていなかったのでデータについては適当にしていましたが、☆が2個付いたし折角なので、文字のデータですが公開してみることにしました! 見難いですが、とりあえず色々あります。これらから一体何が読み解けるのかは、全くの謎です!

見慣れない構文名があるので、変なものをざっと解説すると、DO-FOREVERはその名のとおり無限ループ用です。個人的には是非復活して欲しいですね(笑) Lispマシンでは人気がありましたが、Common Lisp以降どっかにいなくなりました。DO-NAMED系は、DOのブロックに名前が付いていて脱出時に指定します。これもCLで、BLOCKとして統一されたので姿を消してしまいました。

全然関係ないですが、ループ系の構文の名前を考える、ということでは、RRRSのメーリングリストで名前付きLETに適切な名前を付けよう!、というのが熱くて面白いです。もの凄く沢山の案が提案されているのですが、結局採用されずに今に至るという流れが特に好きです(笑)

現在の主なフリーの処理系

  • SBCL
構文名 総数 総行数行数/構文最大行数
DOLIST 1073 9956 9 152
DO 702 7463 10 170
MAPCAR 547 2082 3 45
LOOP 514 3574 6 57
DOTIMES 359 2161 6 88
LABELS 156 5339 34 306
DO* 65 821 12 81
MAP 53 340 6 103
MAPC 47 152 3 14
MAPCAN 23 229 9 64
PROG 7 568 81 366
MAPLIST 1 7 7 7
  • CLISP
構文名 総数 総行数行数/構文最大行数
DOLIST 382 4016 10 332
MAPCAR 304 1345 4 176
DO 282 4110 14 117
DOTIMES 144 729 5 62
LOOP 102 993 9 206
DO* 94 1871 19 250
MAP 70 184 2 12
MAPCAN 60 333 5 26
LABELS 52 4073 78 1233
MAPC 35 155 4 36
PROG 12 256 21 131
MAPL 8 45 5 35
MAPLIST 4 31 7 26
MAPCON 2 2 1 1
  • CMUCL
構文名 総数 総行数行数/構文最大行数
DOLIST 1570 12602 8 90
DO 1243 13010 10 179
DOTIMES 710 4565 6 91
MAPCAR 612 2361 3 47
PROG 424 7489 17 377
LOOP 405 2554 6 56
DO* 175 3335 19 132
LABELS 161 5755 35 230
MAPC 104 191 1 14
MAP 58 148 2 12
MAPCAN 18 88 4 11

古い処理系

  • Franz Lisp 1985頃?
構文名 総数 総行数行数/構文最大行数
DO 371 4462 12 195
PROG 205 5377 26 575
MAPCAR 69 213 3 16
MAPC 53 303 5 41
DOLIST 41 280 6 32
LOOP 24 104 4 11
MAPCAN 10 61 6 17
MAPLIST 3 33 11 11
DOTIMES 2 2 1 1
MAP 1 6 6 6
MAPCON 1 5 5 5
  • Rutgers PDP-10 CL 1985年頃
構文名 総数 総行数行数/構文最大行数
DO 368 3451 9 78
DOLIST 157 964 6 68
DOTIMES 78 361 4 28
DO* 74 874 11 61
MAPCAR 62 176 2 13
PROG 31 687 22 62
LABELS 11 244 22 59
MAPC 6 19 3 6
MAPCAN 6 37 6 8
LOOP 2 4 2 3
MAPL 1 4 4 4
構文名 総数 総行数行数/構文最大行数
DO 902 9181 10 251
PROG 359 14913 41 603
MAPC 275 1597 5 52
MAPCAR 184 628 3 29
MAPCAN 51 322 6 52
LOOP 30 166 5 28
DOTIMES 16 238 14 46
MAP(MAPL) 15 118 7 25
DOLIST 13 35 2 7
MAPLIST 6 19 3 6
MAPCON 3 5 1 2
DO* 1 1 1 1

Lispマシン系

  • LMI K-Machine 1986年頃
構文名 総数 総行数行数/構文最大行数
DO 614 5653 9 146
DOTIMES 392 2658 6 121
DOLIST 355 2441 6 62
MAPCAR 235 626 2 13
LABELS 137 1754 12 98
LOOP 92 303 3 16
MAPC 89 257 2 15
DO-FOREVER 46 548 11 58
DO* 42 571 13 56
MAP 26 43 1 6
PROG 16 333 20 58
MAPCAN 10 68 6 9
DO*-NAMED 6 48 8 9
MAPL 5 7 1 3
MAPCON 2 16 8 8
MAPLIST 1 5 5 5
DO-NAMED 0 0 0 0
  • LMI Lambda 1982年頃
構文名 総数 総行数行数/構文最大行数
DO 4018 46904 11 156
DOLIST 2049 12879 6 142
LOOP 1308 11002 8 119
DOTIMES 1127 5761 5 151
MAPCAR 662 1882 2 92
PROG 607 17999 29 404
DO-FOREVER 257 3782 14 183
MAPC 250 2581 10 1719
DO* 97 1716 17 114
MAP 84 255 3 44
MAPCAN 68 325 4 20
DO-NAMED 36 933 25 97
DO*-NAMED 6 27 4 9
MAPL 2 2 1 1
MAPCON 2 4 2 2
MAPLIST 0 0 0 0
  • MIT CADR 1979年頃
構文名 総数 総行数行数/構文最大行数
DO 2321 27545 11 142
DOLIST 806 4632 5 72
PROG 665 15177 22 253
LOOP 457 3360 7 54
DOTIMES 316 1775 5 142
MAPCAR 155 390 2 12
MAPC 114 306 2 17
DO-NAMED 46 1094 23 74
MAPCAN 16 56 3 9
MAP 12 17 1 5
MAPCON 2 4 2 2
  • Gigamos 1987年頃
構文名 総数 総行数行数/構文最大行数
DO 622 7827 12 140
DOLIST 362 2358 6 50
LOOP 233 1808 7 119
DOTIMES 191 1112 5 121
MAPCAR 151 380 2 48
LABELS 65 1949 29 199
PROG 64 2297 35 167
MAPC 56 126 2 25
DO* 21 267 12 32
DO-FOREVER 16 196 12 34
MAPCAN 9 49 5 8
DO-NAMED 7 283 40 90
MAP 4 4 1 1

コードの量が少ないので参考データとして

  • Peter Norvig (LTD) 1995年頃
構文名 総数 総行数行数/構文最大行数
LOOP 32 133 4 17
MAPCAR 29 64 2 7
MAP 8 17 2 6
DOLIST 7 42 6 13
LABELS 4 47 11 32
DO 3 3 1 1
MAPC 3 7 2 3
MAPCAN 3 9 3 7
MAPLIST 1 1 1 1
MAPCON 1 1 1 1
DOTIMES 1 9 9 9