DEV Community

Discussion on: Top 43 Programming Languages: When and How to Use Them

Collapse
 
ogamita profile image
Pascal Bourguignon • Edited
Compilation started at Wed Nov 14 12:42:13

make -k parens

fact.lisp             20 parentheses, braces, brackets, angle-brackets ,semi-colons, commas
fact.c                31 parentheses, braces, brackets, angle-brackets ,semi-colons, commas


==== fact.lisp ====
(defun fact (x)
  (if (zerop x)
      1
      (* x (fact (1- x)))))
(format t "~%~D! = ~D~%" 42 (fact 42))
(quit)

==== fact.c ====
#include <stdio.h>

int fact(int x){
  return((0==x)?1:(x*(fact(x-1))));}

int main(){
   printf("\n%d! = %d\n",42,fact(42));
   return(0);}


Compilation finished at Wed Nov 14 12:42:13

And yet, this is C with lisp style. In any project with coding guidelines, you'd have to write:

if(0==x){
   return (1);
}else{
   return (x*fact(x-1));
}

increasing the count of braces...

Thread Thread
 
gypsydave5 profile image
David Wickes • Edited

Not that I want to play parenthesis golf with you...

(defun fact (n) 
  (loop for i from n downto 1
        for x = n then (* x i) 
        maximize x))

(maximize is definitely a bit of a hack - should really be finally (return x) but that'd be another pair of parens)