URI: 
       Title: Showing some Common Lisp features
       Author: Solène
       Date: 05 December 2017
       Tags: lisp
       Description: 
       
       # Introduction: comparing LISP to Perl and Python
       
       We will refer to Common LISP as CL in the following article.
       
       I wrote it to share what I like about CL. I'm using Perl to compare CL
       features. I am using real world cases for the average programmer. If
       you are a CL or perl expert, you may say that some example could be
       rewritten with very specific syntax to make it smaller or faster, but
       the point here is to show usual and readable examples for usual
       programmers.
       
       This article is aimed at people with programming interest, some basis
       of programming knowledge are needed to understand the following. If
       you know how to read C, Php, Python or Perl it should be
       enough. Examples have been choosed to be easy.
       
       I thank my friend killruana for his contribution as he wrote the
       python code.
       
       ## Variables
       
       
       ### Scope: global
       
       **Common Lisp code**
       
           (defparameter *variable* "value")
       
       Defining a variable with defparameter on top-level (= outside of a
       function) will make it global. It is common to surround the name of
       global variables with **\*** character in CL code. This is only for
       readability for the programmer, the use of **\*** has no
       incidence.
       
       **Perl code**
       
           my $variable = "value";
       
       **Python code**
       
           variable = "value";
       
       ### Scope: local
       
       This is where it begins interesting in CL. Declaring a local variable
       with **let** create a new scope with parenthesis where the variable
       isn't known outside of it. This prevent doing bad things with
       variables not set or already freed. **let** can define multiple
       variables at once, or even variables depending on previously declared
       variables using **let\***
       
       
       **Common Lisp code**
       
           (let ((value (http-request)))
             (when value
               (let* ((page-title (get-title value))
                      (title-size (length page-title)))
                 (when page-title
                   (let ((first-char (subseq page-title 0 1)))
                     (format t "First char of page title is ~a~%"
       first-char))))))
       
       **Perl code**
       
           {
               local $value = http_request;
               if($value) {
                   local $page_title = get_title $value;
                   local $title_size = get_size $page_title;
                   if($page_title) {
                       local $first_char = substr $page_title, 0, 1;
                       printf "First char of page title is %s\n", $first_char;
                   }
               }
           }
dataswamp.org:70 /~solene/article-lisp-compare:83: port field too long