In Scala 2.8 language specification, §6.26.5 Eta Expansion, it states that we need a maximal sub-expression, however, no definition of this can be found. Can someone clarify this?
What is a "Maximal Sub-expression" in Scala 2.8 specification §6.26.5 Eta Expansion?
210 Views Asked by Felix At
1
There are 1 best solutions below
Related Questions in SCALA
- Spark .mapValues setup with multiple values
- Where do 'normal' println go in a scala jar, under Spark
- Serializing to disk and deserializing Scala objects using Pickling
- Where has "Show Type Info on Mouse Motion" gone in Intellij 14
- AbstractMethodError when mixing in trait nested in object - only when compiled and imported
- Scala POJO Aggregator Exception
- How to read in numbers from n lines into a Scala list?
- Spark pairRDD not working
- Scala Eclipse IDE compiler giving errors until "clean" is run
- How to port Slick 2.1 plain SQL queries to Slick 3.0
- Log of dependency does not show
- Getting unary error for escaped characters in Scala
- Akka actor invoked with a function delegate - is this bad practice?
- Json implicit format with recursive class definition
- How to create a executable jar reading files from local file system
Related Questions in TYPE-INFERENCE
- Type inference inconsistency between toList and toBuffer
- Understand syntactic sugar for lambda expressions
- Implicit not found when omitting empty argument list
- Java interop - type inference failure with wildcard types
- Scala type inference for both a generic type and it's type parameter - why doesn't it work?
- Calling non-strict function in Scala with explicit types doesn't compile, inferred types works
- Matching on type patterns with type variables and type classes
- Type inference for (ignoring) method parameters in order to select a MethodInfo
- Swift Impossible Type Inference
- How to infer a function type parameter in a template function with a lambda passed as argument?
- Is declaring variable with type inference as effective as "classical way" of initializing variable with parenthesis after variable name?
- ToString throws NullReferenceException for unit value ()
- Type inference on ToString() vs string operator
- GADT's: Is there a reason why the weakest or strongest type is not chosen
- How to limit a type to the class of a interface and not the instance of that interface?
Related Questions in EXPANSION
- How to code a parameter with a variable that expands into a variable number of parameter components
- Expand an expression in Maple contening modulus
- Substituting a command into the parameter list of another command in bash
- Make expand variables in another variables
- How to expand filename without extension in abbreviation in vim?
- Delayed variable expansion in bash
- Can not upload new main expansion file to Google Play console
- Expanding a text with backspace at the end
- Does Expansion Files stores all files into the res/drawable folder in my phone?
- Utilising ARGV[0] in ruby, both before and after shell expansion
- Expanding a dynamic array by passing it inside a function
- How to check a file exist in obb package or not?
- bash tab completion without variable expansion?
- Sequences expansion and variable in bash
- Does ruby expression expansion via #{} do double expansion?
Related Questions in LANGUAGE-SPECIFICATIONS
- C++ Template Equivalence of Prototypes
- Importing classes and namespaces in PHP: What difference does a leading backslash make?
- Blogger template language specifications
- Why is it not allowed in Java to overload Foo(Object...) with Foo(Object[])?
- What is the origin of CS0060:The direct base class of a class type must be at least as accessible as the class type itself
- If an identity conversion exists from S to T, must it be that S and T are same type?
- What is a "Maximal Sub-expression" in Scala 2.8 specification §6.26.5 Eta Expansion?
- What part of ECMAScript spec mandates that String type is immutable?
- Why does C# also not allow empty conditions in while loops?
- Why don't statements that don't do anything throw an exception (or warn the developer)?
- Why is the variable in a for...in loop a string?
- What variable is being referred to here?
- Why plus operator in Java always produces Integer?
- "At least one" in C standard translation limits specification
- JavaScript Spec - Relevant vs Surrounding Agent
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?
Consider the following:
And then:
Here
(list1 ++ list2).foldLeft(empty)is the expression of method type, andlist1 ++ list2andemptyare its maximal sub-expressions, which are just literally its largest constituent expressions. We're using_to force eta expansion, but in some contexts that wouldn't be necessary.It makes sense that we wouldn't want
list1 ++ list2to be evaluated every time we use the functionfoo, for example, and that's what the conversion described in §6.26.5 accomplishes—it makes sure that the sub-expressions are evaluated and saved once, before the function is created.If we'd started the REPL with
-print, we'd have seen the following (reformatted for clarity):If you're ever wondering what exactly constitutes a sub-expression in a given situation, this is an easy way to check—just look for the lines starting with
<synthetic> val.