4 ms·
Another theory is that there are far fewer symbols in Lisp than python or coffeewhatever, making it easier to read.
by KC8ZKF 12y ago
Another theory is that there are far fewer symbols in Lisp than python or coffeewhatever, making it easier to read.
- rtpg 12y agothis is more of a "symbols per line" argument rather than "symbols in the language" argument. grade = (student) -> if student.excellentWork "A+" else if student.okayStuff if student.triedHard then "B" else "B-" else "C" (from coffescript examples) Imagine how many more symbols that would have in any lisp dialect
- lispm 12y ago(defun grade (student) (cond ((excellent-work student) :a+) ((okay-stuff student) (if (tried-hard student) :b :b-)) (t :c)))
- illo 12y agoErlang, just for fun: grade(#student{work=Work, tried_hard=Tried}) -> grade1(Work, Tried). grade1(excellent_work, _) -> 'a+'; grade1(okay_stuff, yes) -> b; grade1(okay_stuff, _) -> 'b-'; grade1(_, _) -> c. Edit: formatting.
- JadeNB 12y agoOr, if we're going to go with Prolog-inspired syntax, then why not Prolog? grade(Student, Grade) :- worked(Student, Work), work_grade(Work, Student, Grade). work_grade('Excellent', _, 'A+'). work_grade('Okay', Student, 'B') :- tried_hard(Student). work_grade('Okay', _, 'B-'). work_grade(_, _, 'C'). I'm a bit rusty, and I don't have a Prolog interpreter to hand to test, so I might have got some syntax wrong.
- sfk 12y agoI'm always amazed that I hardly ever program in Lisp and yet these short snippets are more readable than any other language.
- dghf 12y agoYes, I've never understood why dostuff(x) is considered so much more readable than (dostuff x)
- bad_login 12y ago;; comparing with racket: (define (grade student) (cond [(excellent-work student) "A+"] [(and (okay-stuff student) (tried-hard student)) "B"] [(okay-stuff student) "B-"] [else "C"])) ;; Or (require racket/match) (define (grade student) (match (map (lambda (fn) (fn student)) '(excellent-work okay-stuff tried-hard)) [(list #t _ _) "A+"] [(list _ #t #t) "B"] [(list _ #t _) "B-"] [else "C"]))
- dghf 12y agoClojure: (defn grade [student] (cond (excellent-work student) "A+" (okay-stuff student) (if (tried-hard student) "B" "B-") :else "C"))