title: Where to learn how to practically use Common Lisp
body: <p>I am a C++ programmer trying to learn Common Lisp. I have looked at some books like Land of Lisp and read numerous online articles about the various virtues of Lisp. However, I need some advice.</p>
  
  <p>Almost everything I have read about Common Lisp has to do with how amazing it is and how amazingly fast you can get stuff done with it and how it amazingly solved many problems with modern programming languages 30 years ago. Also how amazing macros are, and how every every programming paradigm (OO, functional, actor based or whatever, etc) can be used in Lisp, and how lists are the ultimate data structure. Basically treating Lisp like a research language and saying how different and revolutionary it is.</p>
  
  <p>And all that stuff is probably true, but the problem is I haven't seen much stuff how to do practical things like read a file and split it into words and do some processing on it. I'm not interested in learning Common Lisp for the sake of learning Common Lisp, but for the sake of getting thing that I used to do in C++ done faster and with fewer errors.</p>
  
  <p><strong>So my question is</strong> what is the best resource (be it a website, book, anything) that <em>focuses on teaching how to use Common Lisp to do common programming tasks</em> like</p>
  
  <ul>
  <li>How to read files</li>
  <li>How to read a file, replace words in the file, and write the result back to the file</li>
  <li>Iterate the files in a directory and other filesystem stuff</li>
  <li>Interact with an SQL db</li>
  <li>Do communications over sockets</li>
  <li>Threading for stuff like a webserver</li>
  <li>Create GUIs</li>
  <li>Perform operations on binary files</li>
  <li>Write a parser (not an interpreter for Lisp in Lisp, which as I understand is like 5 lines of Lisp)</li>
  <li>Interact with the operating system (i.e. stuff written in C or C++) to do stuff Lisp can't do natively</li>
  <li>How to write Lisp extensions in C (is that possible?)</li>
  <li>Embed a lua interpreter (is that possible?)</li>
  </ul>
  
  <p>And also on a less immediately practical note, how to implement common data structures in lisp such as an heap, stack, binary search tree, etc. However that may be just using Lisp's list operations like <code>car</code> and <code>cdr</code> in the right way. I don't know.</p>
  
  <p>I highly doubt that any of this (with the unlikely exception of the last two in the list) is impossible with Lisp or people wouldn't love it so much. And the aforementioned stuff that I've read mentions plenty of real world software written in Lisp (Yahoo! web store comes to mind).</p>
  
  <p>However, having programming in a (<em>the?</em>) imperative language before, I am anxious to get to using what new knowledge I get to write real-world applications. So what's the quickest way to learn writing practical software with Lisp?</p>
  
  <p>By the way, I have seen Peter Seibel's <em>Practical Common Lisp</em> but, judging by the TOC, it only touches on <em>some</em> of the things I would like to learn to use Lisp to do.</p>
  
  <p>One more question if I may (sorry if this is combining two questions into one), where can I find a reference to Lisp's functions and stuff?</p>
  
  <p>And I <em>really</em> want to like Lisp.</p>