3 ms·
It's the Revised Revised Revised Revised Revised Revised Revised Report on the algorithmic programming language Scheme. That's 7 "Revised"s, hence R7RS. Basical
by tmtvl 3y ago
It's the Revised Revised Revised Revised Revised Revised Revised Report on the algorithmic programming language Scheme. That's 7 "Revised"s, hence R7RS. Basically the RxRSes are full specifications of what you need in a Scheme implementation to conform to the Xth iteration of the language.
- dxbydt 3y ago(Revised (Revised (Revised (Revised (Revised (Revised (Revised Report)))))))
- tmtvl 3y agoI like using arrow-macros (threading macros) myself; (-> report revised revised revised revised revised revised revised)
- bjoli 3y agoThat is not in the style of srfi-197. (chain report (revised _) (revised _) ...) There are benefits to this approach, such as it handling both applying returned lists and multiple return values by default.
- fuzztester 3y ago(very (very (very (well (said)))))
- joshxyz 3y agothat's an interesting naming convention!
- lispm 3y agoCL-USER 21 > (let ((n 7) (report '(report))) (flet ((revise (report) (cons 'revised report))) (do ((report report (revise report)) (i 0 (1+ i))) ((= i n) report)))) (REVISED REVISED REVISED REVISED REVISED REVISED REVISED REPORT)
- tmtvl 3y agoSo weird seeing CL code without a bunch of (declare (type (integer 0) n))'s everywhere. That's the only thing which keeps me with CL instead of Scheme (I'm rather fond of syntax-rules, case-lambda, case sensitivity, and being able to do things like... (define range+ (make-range-merger +)) (define (double-range range) (range+ range range)) , which I think is a little nicer than (setf (fdefinition range+) (make-range-merger #'+)) or having to precede range+ with funcall everywhere I want to use it).
- lispm 3y agoPersonally I find Common Lisp in some cases slightly uglier, but clearer. (define foo (make-foo)) What is it? A function or a non-function? I prefer the Common Lisp version: (defvar *foo* (make-foo) "*foo* is the current input/output foo object.") It's clear that DEFVAR usually defines a variable and not a function. Bonus: we can document the thing in a standard way. For functions I would define a define macro. (define foo (make-foo) "foo is a function with two arguments of type bar, it returns ..." (ftype (function (bar bar) baz)) Which would expand into a (setf fdefinition), a type declaration and setting the documentation. I prefer the uglier, but better standardized and slightly more practical language.