If I have implemented letrec* in my Scheme interpreter, can I simply implement letrec by making it the same as letrec*? Is this allowed by the Scheme standards?
Can letrec be the same as letrec*?
106 views Asked by Flux At
1
There are 1 answers
Related Questions in SCHEME
- How to get IronScheme function return in C# (Visual Studio)
- How is it possible to filter a list of directories via "directory-exists?"?
- create a new list in the same format as taken from text file
- remove file name if it is already in the list
- Is there a way to see the body of a lambda in Racket?
- Transpose a matrix in racket (list of lists
- Racket\Scheme compare and delete unwanted items in a list
- Extracting the number of members inside a structure
- How to get the file name and line number where an error occurred in MIT/GNU Scheme?
- Using .ico files as icons when creating executables in DrRacket IDE
- Accessing call stack depth in Scheme
- Product of squares of odd elements in list in Scheme
- Is it possible to bootstrap MIT scheme from portable C to native?
- Using MIT/GNU Scheme
- What are 'if ,define, lambda' in scheme?
Related Questions in LANGUAGE-LAWYER
- Why is implicit pointer of pointer to pointer conversion legal?
- Is it legal to compare dangling pointers?
- How does an unspecified pointer conversion behave in C++14?
- Function returning another function
- MSVC 12 std::initializer_list bug when copying std::string
- Is it valid to pass non-arithmetic types as arguments to cmath functions?
- `new Object` vs `Object` in the ECMAScript spec
- Variadic template parameters of one specific type
- Quadruple "const" in function definition
- Name lookup for local class members inside templates
- The destructor for the class member `B`, why is it invoked in the snippet below?
- decltype, recursive type deduction for overloaded operator
- Conversion from std::tuple<T, U> to std::pair<T, U>
- Why are typedef templates illegal?
- Is the grammars in Java7 spec really equivalent?
Related Questions in LETREC
- Why TSPL's letrec example can be run in ChezScheme with only let?
- Is letrec only meant for defining procedures?
- Why is the variable undefined in the initialization form of this letrec?
- Why does let not allow mutually recursive definitions, whereas letrec can?
- Can every letrec be replaced with letrec*?
- Can letrec be the same as letrec*?
- How to use `letrec` to define function "length" within the body of function "lengh-it"
- Generalised letrec semantics for mutual recursion
- Expression for defining letrec implementing little language in Haskell
- Understanding recurive let expression in lambda calculus with Haskell, OCaml and nix language
- Scheme: are `letrec` and `letcc` crucial for efficiency?
- How to implement letrec in Javascript?
- How is it possible that a binding shadows the existing binding in `case of` block?
- Haskell `let` bindings in lambda calculus
- Sharing vs. non-sharing fixed-point combinator
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Hmmm...
r6rs uses the language "It should be possible to evaluate each <init> without assigning or referring to the value of any <variable>" (emphasis added), but I think the formal semantics indicates that implementations must raise an exception:
(
(alias letrec letrec*)is Chez to make letrec the same as letrec* )r7rs provides a
letrecmacro expanding toletandset!(page 69 of the PDF):(nb
<undefined>replaced by 0) Using this produces:(One can
(expand '(letrec ([x 1] [y (+ x 1)]) y))in Chez Scheme to see why)(edit: Ghuloum & Dybvig 2009 Fixing Letrec (reloaded) (PDF) discusses letrec and letrec*)