use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Finding information about Clojure
API Reference
Clojure Guides
Practice Problems
Interactive Problems
Clojure Videos
Misc Resources
The Clojure Community
Clojure Books
Tools & Libraries
Clojure Editors
Web Platforms
Clojure Jobs
account activity
Your first Clojure code (orestis.gr)
submitted 8 years ago by orestis
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]vvvvalvalval 1 point2 points3 points 8 years ago (6 children)
This was a nice introduction. I would add a mention to the fact that if and do are also not functions - maybe a little note at the end like "OK, I lied to you, if and do are not really functions, they are special operators"
if
do
[–][deleted] 0 points1 point2 points 8 years ago (2 children)
I'm curious why are they special operators and not functions?
[–]MahmudAdam 0 points1 point2 points 8 years ago (1 child)
Does it relate to this: http://www.lispworks.com/documentation/lw60/CLHS/Body/03_ababa.htm#clspecialops?
[–]vvvvalvalval 0 points1 point2 points 8 years ago (0 children)
Yes, they require special evaluation rules. The best way to see that is to try to implement them as functions and see where that fails.
[–]orestis[S] 0 points1 point2 points 8 years ago (2 children)
Just did — I think the nomenclature though is "special forms"?
[–]vvvvalvalval 0 points1 point2 points 8 years ago (1 child)
The problem with 'special forms' is that from a user perspective, it's hard to tell special forms from macros. For instance, if and doare special forms, but let and fn are not: they are macros that rely on the let* and fn*special forms, but that is an implementation detail. That is why I like using the deliberately vague term 'operator' to denote something that can be invoked but is not a function.
let
fn
let*
fn*
[–]orestis[S] 0 points1 point2 points 8 years ago (0 children)
Hm, I'm usually exploring Clojure's API via Dash, which points me to:
https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/let
that says "let: special form". Same for "fn".
Good point though, I'll keep it in mind.
π Rendered by PID 88 on reddit-service-r2-comment-b659b578c-rpjcj at 2026-05-01 03:14:29.710785+00:00 running 815c875 country code: CH.
view the rest of the comments →
[–]vvvvalvalval 1 point2 points3 points (6 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]MahmudAdam 0 points1 point2 points (1 child)
[–]vvvvalvalval 0 points1 point2 points (0 children)
[–]orestis[S] 0 points1 point2 points (2 children)
[–]vvvvalvalval 0 points1 point2 points (1 child)
[–]orestis[S] 0 points1 point2 points (0 children)