Jeffrey Meunier has an implicit Curry macro here, which uses defmacro. I was wondering if someone has ever written this with syntax-rules?
Implicit currying in Scheme with syntax-rules?
518 Views Asked by Jay At
1
There are 1 best solutions below
Related Questions in MACROS
- Writing a `define-let` macro, with hygiene
- Find all functions generated by macros
- How to token paste a number?
- Parentheses and macro overloading in C++
- Is there any way to skip macro replacement(During preprocessing) when macro is used as a variable name?
- Why is it not advised to define macros in header files?
- What does the non-terminating-p argument of set-macro-character do?
- Calling a table of function using repeat blocks or macros in GNU assembly
- x-macro conditional error - number comparison
- SAS Concatenate Multiple Variables to Create Data-Driven Macro Statements
- clojure quoting inside let
- Julia: How do I create a macro that returns its argument?
- How do I unit test clojure.core.async go macros?
- Defining Macros that are equal to functions that return objects in C++
- syntax error : missing ')' before 'constant'
Related Questions in FUNCTIONAL-PROGRAMMING
- Access into a Binary Search Tree via a bound function in a function template
- Convert loop to Maybe monad
- Lazy concat in Immutable.js?
- Erlang syntax error unclear
- What is the type of the variable in do-notation here in Haskell?
- Lazy functions evaluation in swift
- Standard ML / NJ: Loading in file of functions
- First Object in Set<Future<Object>> that satisfies a predicate
- How to write a type that is isomorphic to Tree without nested lists?
- Functional way of doing a loop of operations on an array
- Good practice on how to store the result of a function for later use in R
- Apply a list of Functions to a Java stream's .map() method
- First word of binary string erlang
- Easier way to apply multiple arguments in Haskell
- scala : use of braces for a function when the parameter is a predicate
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 CURRYING
- ML currying and anonymous functions
- In simplest term, what is currying and why should this approach be favored over traditional programming paradigm?
- F#: currying differences between functions and static members
- Writing lazy curried in scala with multiple parameters
- Reference method from different class as curried function
- Why this implementation of maximum doesn't work in haskell: maximum' = foldr1 max
- Is it possible to add a value when returning a function from a recursive function being chained?
- How to use curried functions in Haskell with map?
- Default parameters and currying: Python vs. Javascript
- How can I get this currying experiment to behave as expected?
- Javascript currying: why does one closure scope example work, but another doesn't?
- Method reference with argument
- Scheme/DrRacket - map function with foldr
- Curried infix operators in swift. Is it possible?
- IntelliJ Scala - Calling a Function's .curried
Related Questions in SYNTAX-RULES
- syntax-rules not completely hygienic?
- Please refactor my macro in Scheme
- How to control order of Scheme macro expansion?
- Why is my (guile) scheme macro evaluating its argument?
- How are vector patterns used in syntax-rules?
- Scheme macro pairwise processing question
- Introducing a Named Variable with Syntax Rules
- Guile `syntax-rules`: Misplaced Ellipsis in Form; How to Write this Macro with Two Ellipses?
- Is it possible to define a syntax-rules macro in Common Lisp
- Scheme syntax-rules matching any number of pattern variable before a literal?
- How clojure macro parses special symbol?
- Implicit currying in Scheme with syntax-rules?
- Why can't a Scheme macro with the name "if" be defined?
- Is it possible to define anaphoric macros using syntax-rules only?
- What Scheme special forms must the hygienic macro expander know about?
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)
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?
There are a number of curry implementations for Scheme -- none can be as elegant as Haskell, since there functions are always unary functions, so everything can be curried. (But this can of course be implemented in a sufficiently powerful Scheme like Racket.)
As for the macro that you've dug up -- it's a pretty bad one: not only does it use an unhygienic macro, it's also calling
evalexplicitly, and relies on an implementation of environments etc. But it's easy to do that with a simplesyntax-rulesmacro. AFAICT, this is what it implements:But there's an important note here. The page that you reference says that an problem of the function version is that it's explicit -- but it also has an important advantage: with the macro implementation you must define a function using
clambda, whereas the functional version can be used with any built in function. In many Scheme implementations there are facilities to inspect a function's arity, and using this it's possible to implement a currying function version that knows when to call the original function.