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 |

2009-04-08

CLでBASIC風

| 00:27 | CLでBASIC風 - わだばLisperになる を含むブックマーク はてなブックマーク - CLでBASIC風 - わだばLisperになる

Route 477(2009-04-07)

割とCLの人は知ってると思うので、早い者勝ちで書いてみますが、CLだとgotoのタグに普通に数字が使えるので普通に行番号つきのBASICみたいに書けたりします。

(DEFUN MAIN ()
  (PROG (A)
     10 (SETQ A 5)
     20 (IF (= 5 A) (GO 40))
     30 (PRINT "This will never execute")
     40 (PRINT "They were equal!")
     50 (IF (= 6 A) (GO 70))
     60 (PRINT "This will execute 1st...")
     70 :END))

(MAIN)
"They were equal!" 
"This will execute 1st..." 
NIL

ちなみに、CLtLにはgotoのタグやprog/tagbodyの使い方について、推奨しない例が載っていたりしますが、CLtLの例よりひどい実物のコードはみたことがありません(笑)

ちなみに

(prog (a)
 Aに5を代入
 (setq a 5)
 -----------

 Aから5を引く
 (decf a 5)
 ------------

 Aの結果を返す
 (return a)
 -------------)
;=> 0

のような感じのものです。