<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Latest comments for language 'Common Lisp' on doukaku.org</title><link>http://ja.doukaku.org/lang/commonlisp/</link><description>Latest comments for language 'Common Lisp' on doukaku.org(long)</description><language>ja</language><lastBuildDate>Sat, 22 Nov 2008 19:55:42 -0000</lastBuildDate><item><title>mc's comment on 疑似並行処理
</title><link>http://ja.doukaku.org/comment/7964/</link><description>



&lt;a href="http://ja.doukaku.org/215/"&gt;疑似並行処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/215/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/215/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  スレッド等の並行処理についてはANSI&amp;nbsp;CL仕様外で、&lt;br/&gt;処理系毎に異なりますが、差異を吸収するパッケージもあり、&lt;br/&gt;今回は、その目的にportable-threadsを利用しています。&lt;br/&gt;結果が上手く混ざらないので、それぞれ、短かいsleepをかませてあります。&lt;br/&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defpackage :doukaku-215 (:use :cl :portable-threads))
(in-package :doukaku-215)

(loop
   :with ans := ()
   :with tasks := (list 
                   (spawn-thread &amp;quot;num&amp;quot; 
                     (lambda () 
                       (dotimes (i 10) 
                         (push i ans)
                         (sleep 0.001))))
                   (spawn-thread &amp;quot;char&amp;quot;
                     (lambda () 
                       (dotimes (i 10) 
                         (push (code-char (+ 65 i)) ans)
                         (sleep 0.001)))))
   ;; wait
   :while (every #&amp;#39;thread-alive-p tasks) :do (sleep 0.05)
   :finally (return ans))

;=&amp;gt; (#\J 9 #\I 8 #\H 7 #\G 6 5 #\F #\E 4 #\D 3 #\C 2 #\B 1 #\A 0)
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7964/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7964/</guid></item><item><title>mc's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7952/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  処理系の作成コードですが、無駄に複雑でした(^^;&lt;br/&gt;下記のコードでも可能で、これの方がポータブルです。&lt;br/&gt;(set-macro-character&amp;nbsp;#\&amp;lt;&amp;nbsp;(lambda&amp;nbsp;(stream&amp;nbsp;char)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(declare&amp;nbsp;(ignore&amp;nbsp;char))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(read-delimited-list&amp;nbsp;#\&amp;gt;&amp;nbsp;stream&amp;nbsp;'T)))&lt;br/&gt;(set-macro-character&amp;nbsp;#\&amp;gt;&amp;nbsp;(get-macro-character&amp;nbsp;#\)))&lt;br/&gt;&lt;br/&gt;;;&amp;nbsp;イメージ作成&amp;nbsp;(処理系依存/SBCL)&lt;br/&gt;(sb-ext:save-lisp-and-die&amp;nbsp;"/tmp/doukaku-214"&amp;nbsp;:purify&amp;nbsp;'T&amp;nbsp;:executable&amp;nbsp;'T)))&lt;br/&gt;
&lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7952/</guid></item><item><title>mc's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7954/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  なるほど、ありがとうございます!&lt;br/&gt;納得できました。&lt;br/&gt;どちらかというと運営とか利用の心得的な話だったのですね。&lt;br/&gt;&lt;br/&gt;カバレッジについては、仕様上不可能だと証明できれば、&lt;br/&gt;それはそれでOKな気もしますが、どうなんでしょう。&lt;br/&gt;仕様上不可能だと証明することも簡単ではないでしょうし。
&lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7954/</guid></item><item><title>mc's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7948/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  CLの仕様内では丸括弧を無くすのは無理だと思っているのですが、&lt;br/&gt;何でもありということなら、この問題用にカスタマイズされた&lt;br/&gt;処理系を作成すれば、OKだと思います。&lt;br/&gt;解答コードでも極力括弧を減らしてみました。&lt;br/&gt;&lt;br/&gt;(1)&amp;nbsp;下準備として下記のコードを実行し、&amp;lt;&amp;gt;が()の役割をする処理系を&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;作成します。(/tmpに、doukaku-214という実行ファイルができます。)&lt;br/&gt;&lt;br/&gt;(2)&amp;nbsp;1の処理系で、解答のコードを&amp;lt;load..&amp;gt;で実行します。&lt;br/&gt;~~~&lt;br/&gt;;;&amp;nbsp;下準備&amp;nbsp;SBCL限定&lt;br/&gt;&lt;br/&gt;;;&lt;br/&gt;;;&amp;nbsp;doukaku&amp;nbsp;214&amp;nbsp;lisp&lt;br/&gt;;;&lt;br/&gt;&lt;br/&gt;(in-package&amp;nbsp;"SB-IMPL")&lt;br/&gt;&lt;br/&gt;(defun&amp;nbsp;&amp;lt;&amp;gt;read-list&amp;nbsp;(stream&amp;nbsp;ignore)&lt;br/&gt;&amp;nbsp;&amp;nbsp;(declare&amp;nbsp;(ignore&amp;nbsp;ignore))&lt;br/&gt;&amp;nbsp;&amp;nbsp;(let*&amp;nbsp;((thelist&amp;nbsp;(list&amp;nbsp;nil))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(listtail&amp;nbsp;thelist))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(do&amp;nbsp;((firstchar&amp;nbsp;(flush-whitespace&amp;nbsp;stream)&amp;nbsp;(flush-whitespace&amp;nbsp;stream)))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((char=&amp;nbsp;firstchar&amp;nbsp;#\&amp;gt;&amp;nbsp;)&amp;nbsp;(cdr&amp;nbsp;thelist))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(when&amp;nbsp;(char=&amp;nbsp;firstchar&amp;nbsp;#\.)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(let&amp;nbsp;((nextchar&amp;nbsp;(read-char&amp;nbsp;stream&amp;nbsp;t)))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(cond&amp;nbsp;((token-delimiterp&amp;nbsp;nextchar)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(cond&amp;nbsp;((eq&amp;nbsp;listtail&amp;nbsp;thelist)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(unless&amp;nbsp;*read-suppress*&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(simple-reader-error&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stream&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Nothing&amp;nbsp;appears&amp;nbsp;before&amp;nbsp;.&amp;nbsp;in&amp;nbsp;list.")))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((whitespace[2]p&amp;nbsp;nextchar)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(setq&amp;nbsp;nextchar&amp;nbsp;(flush-whitespace&amp;nbsp;stream))))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(rplacd&amp;nbsp;listtail&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&amp;nbsp;Return&amp;nbsp;list&amp;nbsp;containing&amp;nbsp;last&amp;nbsp;thing.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(car&amp;nbsp;(read-after-dot&amp;nbsp;stream&amp;nbsp;nextchar)))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(return&amp;nbsp;(cdr&amp;nbsp;thelist)))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&amp;nbsp;Put&amp;nbsp;back&amp;nbsp;NEXTCHAR&amp;nbsp;so&amp;nbsp;that&amp;nbsp;we&amp;nbsp;can&amp;nbsp;read&amp;nbsp;it&amp;nbsp;normally.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(t&amp;nbsp;(unread-char&amp;nbsp;nextchar&amp;nbsp;stream)))))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&amp;nbsp;Next&amp;nbsp;thing&amp;nbsp;is&amp;nbsp;not&amp;nbsp;an&amp;nbsp;isolated&amp;nbsp;dot.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(let&amp;nbsp;((listobj&amp;nbsp;(read-maybe-nothing&amp;nbsp;stream&amp;nbsp;firstchar)))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&amp;nbsp;allows&amp;nbsp;the&amp;nbsp;possibility&amp;nbsp;that&amp;nbsp;a&amp;nbsp;comment&amp;nbsp;was&amp;nbsp;read&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(when&amp;nbsp;listobj&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(rplacd&amp;nbsp;listtail&amp;nbsp;listobj)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(setq&amp;nbsp;listtail&amp;nbsp;listobj))))))&lt;br/&gt;&lt;br/&gt;(set-macro-character&amp;nbsp;#\&amp;lt;&amp;nbsp;#'&amp;lt;&amp;gt;read-list)&lt;br/&gt;(set-macro-character&amp;nbsp;#\&amp;gt;&amp;nbsp;#'read-right-paren)&lt;br/&gt;(sb-ext:save-lisp-and-die&amp;nbsp;"/tmp/doukaku-214"&amp;nbsp;:purify&amp;nbsp;'T&amp;nbsp;:executable&amp;nbsp;'T)))
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&amp;lt;with-open-file &amp;lt;in &amp;quot;/tmp/test.txt&amp;quot;&amp;gt;
  &amp;lt;loop with match? = 0; 
        with lp = &amp;lt;code-char 40&amp;gt;; 
        with rp = &amp;lt;code-char 41&amp;gt;;

        for c = &amp;lt;read-char in nil nil&amp;gt; while c
        if &amp;lt;minusp match?&amp;gt;
          return nil;
        else if &amp;lt;char= lp c&amp;gt;
                do &amp;lt;incf match?&amp;gt;;
             else if &amp;lt;char= rp c&amp;gt;
                    do &amp;lt;decf match?&amp;gt;;
                  end;
             end;
        end;
        finally &amp;lt;return &amp;lt;zerop match?&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7948/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7948/</guid></item><item><title>mc's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7946/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  これのマイナス評価の理由が知りたいんですが、&lt;br/&gt;(1)仕様内でもCLで可能&lt;br/&gt;(2)不可能と言い切っていなかった&lt;br/&gt;(3)その他&lt;br/&gt;等々どういう理由なんでしょうか('-'*)&lt;br/&gt;
&lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7946/</guid></item><item><title>mc's comment on tailの実装
</title><link>http://ja.doukaku.org/comment/7945/</link><description>



&lt;a href="http://ja.doukaku.org/195/"&gt;tailの実装&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/195/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/195/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  該当行のファイルポジションを割出してから表示するようにしてみました。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defun tail (file lines &amp;amp;key (follow nil) (external-format :utf-8))
  (when (&amp;lt; 0 lines)
    (with-open-file (in file :external-format external-format)
      (loop :FOR pos := (last-n-line-position lines file) 
                  :THEN (last-n-line-position lines file :offset pos)
            :DO (file-position in pos)
                (loop :for line := (read-line in nil nil) :while line
                      :do (princ line) (terpri))
            :WHILE follow :DO (sleep 1)))))

(defun last-n-line-position (n file &amp;amp;key (newline-char #\Newline) (offset 0))
  (declare ((integer 0 *) n offset))
  (let* ((n (1+ n))                     ;改行で数えているので1+
         (pool (make-array n :initial-element nil)))
    (with-open-file (in file :element-type &amp;#39;(unsigned-byte 8))
      (file-position in offset)
      (loop :with nl := (char-code newline-char)
            :and pos := 0
            :for byte := (read-byte in nil nil) :while byte
            :for file-pos :from 0 
            :when (eql nl byte)
            :do (setq pos (mod (1+ pos) n))
                (setf (aref pool pos) file-pos)
            :finally (return
                       (let ((ans (loop :for p :across pool 
                                        :minimize (or p 0))))
                         (+ offset
                            (if (zerop ans) 0 (1+ ans)))))))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7945/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7945/</guid></item><item><title>mc's comment on tailの実装
</title><link>http://ja.doukaku.org/comment/7938/</link><description>



&lt;a href="http://ja.doukaku.org/195/"&gt;tailの実装&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/195/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/195/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  あんまり効率は良くないかも&lt;br/&gt;(tail&amp;nbsp;"/etc/passwd"&amp;nbsp;4&amp;nbsp;:follow&amp;nbsp;'T)&lt;br/&gt;;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;br/&gt;haldaemon:x:111:123:Hardware&amp;nbsp;abstraction&amp;nbsp;layer,,,:/var/run/hald:/bin/false&lt;br/&gt;sshd:x:112:65534::/var/run/sshd:/usr/sbin/nologin&lt;br/&gt;statd:x:113:65534::/var/lib/nfs:/bin/false&lt;br/&gt;telnetd:x:114:125::/nonexistent:/bin/false&lt;br/&gt;...&amp;nbsp;1秒おきに繰り返し
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defun tail (file lines &amp;amp;key (follow nil) (external-format :utf-8))
  (when (&amp;lt; 0 lines)
    (let ((pool (make-array lines)))
      (with-open-file (in file :external-format external-format)
        (loop :DO (loop :for line := (read-line in nil nil) :while line
                        :for pos := 0 :then (mod (1+ pos) lines)
                        :do (setf (aref pool pos) line)
                        :finally (loop :for p :from pos
                                       :for x :across pool
                                       :do (princ (aref pool (mod (1+ p) lines)))
                                           (terpri)))
              :WHILE follow 
              :DO (file-position in 0) 
                  (sleep 1))))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7938/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7938/</guid></item><item><title>mc's comment on tailの実装
</title><link>http://ja.doukaku.org/comment/7940/</link><description>



&lt;a href="http://ja.doukaku.org/195/"&gt;tailの実装&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/195/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/195/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  すいません、間違ったものを貼りつけてました。前のでは、ファイルの行数が指定より少ない場合に余計な出力が出てしまいます。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defun tail (file lines &amp;amp;key (follow nil) (external-format :utf-8))
  (when (&amp;lt; 0 lines)
    (let ((pool (make-array lines :initial-element nil)))
      (with-open-file (in file :external-format external-format)
        (loop :DO (loop :for line := (read-line in nil nil) :while line
                        :for pos := 0 :then (mod (1+ pos) lines)
                        :do (setf (aref pool pos) line)
                        :finally (loop :for p :from pos
                                       :for x :across pool
                                       :do (let ((line (aref pool (mod (1+ p) lines))))
                                             (when line 
                                               (princ line)
                                               (terpri)))))
              :WHILE follow 
              :DO (file-position in 0) 
                  (sleep 1))))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7940/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7940/</guid></item><item><title>mc's comment on '('と')'の対応
</title><link>http://ja.doukaku.org/comment/7924/</link><description>



&lt;a href="http://ja.doukaku.org/214/"&gt;&amp;#39;(&amp;#39;と&amp;#39;)&amp;#39;の対応&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/214/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/214/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  Common&amp;nbsp;LispでもSchemeみたいに、()を[]にすれば簡単!!と思ったのですが、リーダーマクロを設定するにも最初は()が必要なのでした…。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;;;; 不可能?
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7924/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7924/</guid></item><item><title>leque's comment on LL Golf Hole 7 - バイト数を読みやすくする
</title><link>http://ja.doukaku.org/comment/7911/</link><description>



&lt;a href="http://ja.doukaku.org/202/"&gt;LL Golf Hole 7 - バイト数を読みやすくする&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/202/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/202/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(let ((kibi 1024.0))
  (do ((b (read) (/ b kibi))
       (us &amp;#39;(|| k M G T) (cdr us)))
      ((&amp;lt; b kibi) (format t &amp;quot;~,1F~A~%&amp;quot; b (car us)))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7911/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7911/</guid></item><item><title>leque's comment on π
</title><link>http://ja.doukaku.org/comment/7910/</link><description>



&lt;a href="http://ja.doukaku.org/210/"&gt;π&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/210/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/210/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;common-lisp:pi と比べると意外と精度が低い？&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(princ (* (acos 0) 2))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7910/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7910/</guid></item><item><title>leque's comment on 2次元ランダムウォーク
</title><link>http://ja.doukaku.org/comment/7909/</link><description>



&lt;a href="http://ja.doukaku.org/193/"&gt;2次元ランダムウォーク&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/193/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/193/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;Common Lisp 手習い。 &lt;a href="http://ja.doukaku.org/comment/6839/"&gt;#6839&lt;/a&gt; を写経。
&lt;/p&gt;



&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(let ((ms #(#c(+1 0)
            #c(0 +1)
            #c(-1 0)
            #c(0 -1)))
      (n 10))
  (do ((p #c(0 0) (+ p (aref ms (random 4))))
       (i 0 (+ i 1)))
      ((= i n))
    (format t &amp;quot;~A ~A ~A~%&amp;quot; i (realpart p) (imagpart p))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7909/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7909/</guid></item><item><title>mc's comment on 世界時計
</title><link>http://ja.doukaku.org/comment/7895/</link><description>



&lt;a href="http://ja.doukaku.org/213/"&gt;世界時計&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/213/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/213/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  なんとも中途半端な感じに…。&lt;br/&gt;;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;現在の時刻は、2008年10月30日&amp;nbsp;9時5分8秒です。&lt;br/&gt;グリニッジ標準時刻は、2008年10月30日&amp;nbsp;0時5分8秒です。&lt;br/&gt;アメリカ・ロサンゼルスの時刻は、2008年10月29日&amp;nbsp;15時5分8秒です。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defconstant +America/Los_Angeles+ 9)
(defconstant +GMT+ 0)

(defun yyyy-mm-dd-hh-mm-ss-list (ut &amp;amp;optional tz)
  (reverse (BUTLAST (multiple-value-list (decode-universal-time ut tz)) 3)))

(let ((ut (get-universal-time)))
  (loop :for (fmt tz) 
          :in `((&amp;quot;現在の時刻は、~A年~A月~A日 ~A時~A分~A秒です。~%&amp;quot; nil)
                (&amp;quot;グリニッジ標準時刻は、~A年~A月~A日 ~A時~A分~A秒です。~%&amp;quot; ,+GMT+)
                (&amp;quot;アメリカ・ロサンゼルスの時刻は、~A年~A月~A日 ~A時~A分~A秒です。~%&amp;quot; ,+America/LOS_Angeles+))
        :do (destructuring-bind (y mo d h m s) 
                (yyyy-mm-dd-hh-mm-ss-list ut tz)
              (format t fmt y mo d h m s))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7895/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7895/</guid></item><item><title>匿名's comment on LL Golf Hole 6 - 10進数を2進数に基数変換する
</title><link>http://ja.doukaku.org/comment/7872/</link><description>



&lt;a href="http://ja.doukaku.org/201/"&gt;LL Golf Hole 6 - 10進数を2進数に基数変換する&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/201/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/201/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;２進数の場合&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(format t &amp;quot;~b&amp;quot; (read))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7872/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7872/</guid></item><item><title>mc's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7848/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  そもそもformat指示子が間違ったやつを貼ってました(^^;&lt;br/&gt;みんな良くみてるなー。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defconstant +漢数字+ &amp;quot;○一二三四五六七八九&amp;quot;)

(defun 亜剌比亜数字至漢数字 (n)
  (map &amp;#39;string (lambda (x) (aref +漢数字+ (parse-integer (string x))))
       (princ-to-string n)))

(let ((一 (position #\一 +漢数字+))
      (三 (position #\三 +漢数字+))
      (九 (position #\九 +漢数字+)))
  (loop :for x :from 一 :to 九 
        :do (loop :for y :from 一 :to 九 
                  :do (format t &amp;quot;~V,,,&amp;#39;　@A&amp;quot; 三 (亜剌比亜数字至漢数字 (* x y))))
            (terpri)))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7848/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7848/</guid></item><item><title>queck's comment on ウィンドウの表示
</title><link>http://ja.doukaku.org/comment/7845/</link><description>



&lt;a href="http://ja.doukaku.org/7/"&gt;ウィンドウの表示&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/7/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/7/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;McCLIM で。
画面中央に配置する方法がわかりませんでした。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(require :mcclim-freetype)

(in-package :clim-user)

(define-application-frame hello-frame ()
  ()
  (:pane
   (make-pane &amp;#39;application-pane
              :display-function (lambda (frame stream)
                                  (declare (ignore frame))
                                  (with-text-size (stream :small)
                                    (format stream &amp;quot;こんにちは、GUI！&amp;quot;)))))
  (:geometry :width 100 :height 75 :top 300 :left 500))

(run-frame-top-level (make-application-frame &amp;#39;hello-frame))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7845/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7845/</guid></item><item><title>mc's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7826/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  出力の整形の為にいらないことをしてアラビア数字を紛れ込ませていたので修正しました(^^;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defconstant +漢数字+ &amp;quot;○一二三四五六七八九&amp;quot;)

(defun 亜剌比亜数字至漢数字 (n)
  (map &amp;#39;string (lambda (x) (aref +漢数字+ (parse-integer (string x))))
       (princ-to-string n)))

(let ((一 (position #\一 +漢数字+))
      (九 (position #\九 +漢数字+)))
  (loop :for x :from 一 :to 九 
        :do (loop :for y :from 一 :to 九 
                  :do (format t &amp;quot;~A &amp;quot; (亜剌比亜数字至漢数字 (* x y))))
            (terpri)))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7826/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7826/</guid></item><item><title>mc's comment on 漢数字で九九の表
</title><link>http://ja.doukaku.org/comment/7823/</link><description>



&lt;a href="http://ja.doukaku.org/212/"&gt;漢数字で九九の表&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/212/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/212/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  あまり面白味のない解答ですが…。&lt;br/&gt;&lt;br/&gt;　　一　　二　　三　　四　　五　　六　　七　　八　　九&lt;br/&gt;　　二　　四　　六　　八　一○　一二　一四　一六　一八&lt;br/&gt;　　三　　六　　九　一二　一五　一八　二一　二四　二七&lt;br/&gt;　　四　　八　一二　一六　二○　二四　二八　三二　三六&lt;br/&gt;　　五　一○　一五　二○　二五　三○　三五　四○　四五&lt;br/&gt;　　六　一二　一八　二四　三○　三六　四二　四八　五四&lt;br/&gt;　　七　一四　二一　二八　三五　四二　四九　五六　六三&lt;br/&gt;　　八　一六　二四　三二　四○　四八　五六　六四　七二&lt;br/&gt;　　九　一八　二七　三六　四五　五四　六三　七二　八一
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defconstant +漢数字+ &amp;quot;○一二三四五六七八九&amp;quot;)

(defun 亜剌比亜数字至漢数字 (n)
  (map &amp;#39;string (lambda (x) (aref +漢数字+ (parse-integer (string x))))
       (princ-to-string n)))

(let ((一 (position #\一 +漢数字+))
      (九 (position #\九 +漢数字+)))
  (loop :for x :from 一 :to 九 
        :do (loop :for y :from 一 :to 九 
                  :do (format t &amp;quot;~@3,,,&amp;#39;　A&amp;quot; (亜剌比亜数字至漢数字 (* x y))))
            (terpri)))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7823/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7823/</guid></item><item><title>mc's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7735/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  オブジェクト指向っぽく書いてみたつもりです…&lt;br/&gt;(with-open-file&amp;nbsp;(in&amp;nbsp;"doukaku-209.data")&lt;br/&gt;&amp;nbsp;&amp;nbsp;(update-file&amp;nbsp;(make-instance&amp;nbsp;'doukaku-209)&amp;nbsp;in&amp;nbsp;*standard-output*))&lt;br/&gt;;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;ID	Forename	Surname	Age&lt;br/&gt;0	Taro	Suzuki	19&lt;br/&gt;1	Hanako	Sato	18
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defpackage :doukaku-209 (:use :cl :split-sequence))
(in-package :doukaku-209)

(defclass file-op () ())

(defgeneric file-to-data (file-op stream))
(defgeneric swap-colum (file-op data))
(defgeneric sort-data (file-op data))
(defgeneric update-datum (file-op data))
(defgeneric format-out-data (file-op stream data))
(defgeneric update-file (file-op in-stream out-stream))

(defmethod update-file ((op file-op) (in stream) (out stream))
  (format-out-data op out
    (swap-colum op 
      (destructuring-bind (title &amp;amp;rest data) (file-to-data op in)
        `(,title ,@(sort-data op (loop :for line :in data 
                                       :collect (update-datum op line))))))))
                     
(defclass doukaku-209 (file-op) ())

(defmethod file-to-data ((op doukaku-209) (in stream))
  (loop :for line := (read-line in nil nil) :while line
        :collect (split-sequence #\Tab line)))

(defmethod swap-colum ((op doukaku-209) (data list))
  (loop :for xx :in (copy-list data) 
        :do (rotatef (nth 1 xx) (nth 2 xx)) 
        :collect xx))

(defmethod sort-data ((op doukaku-209) (data list))
  (sort (copy-list data) #&amp;#39;&amp;lt; :key #&amp;#39;first))

(defmethod format-out-data ((op doukaku-209) (out stream) (data list))
  (format out &amp;quot;~{~{~A~^    ~}~%~}&amp;quot; data))

(defmethod update-datum ((op doukaku-209) (row list))
  (destructuring-bind (id sur fore age) row
    (list (parse-integer id)
          sur
          fore
          (1+ (parse-integer age)))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7735/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7735/</guid></item><item><title>mc's comment on タブ区切りデータの処理
</title><link>http://ja.doukaku.org/comment/7734/</link><description>



&lt;a href="http://ja.doukaku.org/209/"&gt;タブ区切りデータの処理&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/209/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/209/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  なんだか書き捨てって感じになってしまいました(^^;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;(defpackage :doukaku-209 (:use :cl :split-sequence))
(in-package :doukaku-209)

(defun parse-integer-or-never (string &amp;amp;key (after #&amp;#39;values))
  (let ((num (parse-integer string :junk-allowed &amp;#39;T)))
    (if num (funcall after num) string)))

(with-open-file (in &amp;quot;doukaku-209.data&amp;quot;)
  (with-open-file (out &amp;quot;doukaku-209.out&amp;quot; :direction :output :if-exists :supersede)
    (format out &amp;quot;~{~{~A~^    ~}~%~}&amp;quot;
            (destructuring-bind (title &amp;amp;rest data)          
                (loop :for (id sur fore age) :=  (split-sequence #\Tab (read-line in nil nil)) 
                      :while (and id sur fore age)
                      :collect (list (parse-integer-or-never id) 
                                     fore 
                                     sur 
                                     (parse-integer-or-never age :after #&amp;#39;1+)))
              `(,title ,@(sort data #&amp;#39;&amp;lt; :key #&amp;#39;first))))))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/commonlisp/"&gt;
      Common Lisp
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/7734/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/7734/</guid></item></channel></rss>