Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Using a Lisp compiler helps a bit.

  * (defun foo (alpha)
      (flet ((beta (bar)
               (+ alph bar)))
        (bet (beta 1 2))))
The Lisp compiler, here SBCL with its REPL, detects in this function above:

  * wrong number of arguments
  * undefined function
  * undefined variable
  * unused variable

Lisp compilers have only been made available as late as 1962, so that might explain why Lisp has no wider adoption...

  ; in: DEFUN FOO                                                                                                                                                 
  ;     (BETA 1 2)                                                                                                                                                
  ;                                                                                                                                                               
  ; caught WARNING:                                                                                                                                               
  ;   function called with two arguments, but wants exactly one                                                                                                   
  ;   See also:                                                                                                                                                   
  ;     The ANSI Standard, Section 3.2.2.3                                                                                                                        

  ;     (SB-INT:NAMED-LAMBDA FOO                                                                                                                                  
  ;         (ALPHA)                                                                                                                                               
  ;       (BLOCK FOO                                                                                                                                              
  ;         (FLET ((BETA #                                                                                                                                        
  ;                  #))                                                                                                                                          
  ;           (BET (BETA 1 2)))))                                                                                                                                 
  ;                                                                                                                                                               
  ; caught STYLE-WARNING:                                                                                                                                         
  ;   The variable ALPHA is defined but never used.                                                                                                               
  ; in: DEFUN FOO                                                                                                                                                 
  ;     (+ ALPH BAR)                                                                                                                                              
  ;                                                                                                                                                               
  ; caught WARNING:                                                                                                                                               
  ;   undefined variable: ALPH                                                                                                                                    

  ;     (BET (BETA 1 2))                                                                                                                                          
  ;                                                                                                                                                               
  ; caught STYLE-WARNING:                                                                                                                                         
  ;   undefined function: BET                                                                                                                                     
  ;                                                                                                                                                               
  ; compilation unit finished                                                                                                                                     
  ;   Undefined function:                                                                                                                                         
  ;     BET                                                                                                                                                       

  ;   Undefined variable:                                                                                                                                         
  ;     ALPH                                                                                                                                                      
  ;   caught 2 WARNING conditions                                                                                                                                 
  ;   caught 2 STYLE-WARNING conditions                                                                                                                           

  FOO


True, so true. The SBCL compiler is almost human; Once, it insulted me with something like: "You have assigned a value to an index out of bounds. Congratulations!!"

Keep on preaching, Rainer, and may the other programmers see the light.


Most of your comments would be vastly improved by omitting the reams of repl output.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: