|
|
|
|
|
by SamReidHughes
5600 days ago
|
|
There's no tedium of writing everything out with parentheses, so you don't need to worry about that. You aren't writing everything "as a procedure call," or at least I wouldn't put it that way. For example, if you write babby's first recursive function in Scheme, (define (factorial n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
There, the procedure calls are (= n 0), (* n (factorial (- n 1))), (factorial (- n 1)), and (- n 1). You are not writing "(define ...)" as if it were a procedure call. You are writing it as if it were a special form (because it is one). That's a description of how it psychologically feels. Writing the (if ...) special form feels no different than writing if (...) { } else { } in Java.Lisp and Scheme are not tedious at all. I'd say Common Lisp is one of the least tedious languages. |
|
To provide some small examples, I often use Perl, and it gives me some syntax that saves me typing, such as:
* `my @other_list = @a_list[3, 1, 4]` to return just those items from a list (item 3, item 1, and item 4)
* `$str =~ s/$foo/BAR/g` to do string replacements (in string $str, replace all ocurrences of contents of variable $foo with "BAR")
* `my $thing = $colored_objects{red}->[2]` to get item 2 in the list of red-colored objects ($colored_objects is a mapping of color names to lists of items of that color)
* `my $error_msg = "Sorry, but $thing1 doesn't work with $thing2."` to interpolate the values of those 2 variables into the string
* `for (reverse(1 .. 10)) { say "Counting down: $_"; }` (counts down from 10 to 1)
I suppose I've always just guessed that operations like those in a Lisp language would require multiple lines and procedure calls, which would become tedious to write after a while. Is that the case?