lispの定石

例えば、list の 0番目に名前、1番目に 住所が入っているときに
c++では(自分的に) ↓こう書くけど

  const std::string name(list[0]);
  const std::string address(list[1]);
  std::cout << name << address << std::endl;

lispでは

  (let ((name (car list))
        (address (second list)))
       (print (format "%s%s" name address)))

が自然なのか

  (print (format "%s%s" (car list) (second list)))

が自然なのか分からない。

なんとなく、下の方がlispっぽい様な気がするけど、下のコードだと、list[0] って何よ。list[1]って何よって感じがする。
今読んでる 「on lisp」を読み終えた頃には分かるようになるかな。。

lispがスゲーと思うところは、最初に記述してあるメソッドをみると、そのメソッドが何をしたいのかが分かるところ(英語的)。
それと、fluent interface じゃないけど、左から右に流れる流暢な書き方ができるところ。
辛いところは、c++で云うところのstlアルゴリズムがない(存在を知らないだけかも)ところ。



あ、明日誕生日だ