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?
212 views Asked by Felix At
1
There are 1 answers
Related Questions in SCALA
- Mocking AmazonS3 listObjects function in scala
- Last SPARK Task taking forever to complete
- How to upload a native scala project to local repo by sbt like using "maven install"
- Folding a list of OR clauses in io.getquill
- How to get latest modified file using scala from a folder in HDFS
- Enforce type bound for inferred type parameter in pattern matching
- can't write pyspark dataframe to parquet file on windows
- spark streaming and kafka integration dependency problem
- how to generate fresh singleton literal type in scala using macros
- exception during macro expansion: type T is not a class, play json
- Is there any benefit of converting a List to a LazyList in Scala?
- Get all records within a window in spark structured streaming
- sbt publishLocal of a project with provided dependencies in build.sbt doesn't make these dependencies visible to projects using the project as library
- Scala composition of partially-applied functions
- How to read the input json using a schema file and populate default value if column not being found in scala?
Related Questions in TYPE-INFERENCE
- Typescript: how to get possible keys from const with limited values?
- How to Make TypeScript Infer Object Fields in a Tuple Return Type Based on Conditions?
- Is there a way to infer the keys of a mapped type when using Typescript?
- TypeScript: ignore function signatures from inherited classes
- How to correctly give restrictions to typescript generics
- Why can't typescript infer these correlated types?
- Why do I need an explicit downcast in an exhaustive switch expression?
- Type information system recovery
- Constrain Generic Parameter to ICollection with Varying Element Types
- Is type checking required for languages with full type inference (without type annotations)?
- Why can't SBCL determine the upgraded-array-type of elements of a string at compile-time?
- MyPy does not recognise x[idx] as boolean after isinstance(x[idx], bool)
- TypeScript infer value type based on a passed key
- Why is Type Inference not applied?
- is there a way in ts to just restrict key of the object during generic infer?
Related Questions in EXPANSION
- fzf bash refresh / re expannd and substitute $() and `` var expansion with binding in --reload() option
- Is there any PyPSA sample of the Energy Storage capacity expansion model?
- Preserving Spaces in Array Elements with Mixed Strings and Command-Line Flags
- How to expand a Boolean expression in the C++ preprocessor?
- Bash, Fish: prevent variable expansion
- flutter: ExpansionTile with controller error in ListView
- Changing title of ExpansionTile, when expanded in flutter
- Snakemake: wildcard restriction
- Horizontal Expansion Widgets
- Order of Command substitution and Arithmetic expansion in bash
- C preprocessor stringify macro without expanding its components
- Creating a list of possibilities from splitting strings at a certain character - Karnaugh Map
- The difference of compression mechanisms between OLAP and TSDB databases
- Solved: How do i loop through arrays using variable expansion on strings in batch?
- Apache-beam Expansion service failed to build transform for Python ReadFromJdbc #apache_beam.io.jdbc
Related Questions in LANGUAGE-SPECIFICATIONS
- Comparing different EBNF rules for the same programming language
- Is there a specification or standard for Rust?
- Counting backslashes to determine illegal unicode escapes as specified in Java Language Specification
- Error struct assignment in if clause (language spec question)
- What does "execution trace" mean in Java Memory Model
- What part of ECMAScript spec mandates that String type is immutable?
- Type Inference in Method Invocation Poly Expression within the Invocation Context with/without method chaining
- How to use "with" keyword in a copy constructor in C#?
- C# Reference Type alternatives to Value Types
- How do deal with the "type context" rule (Java SE 16 spec §3.2) for `>` characters properly when performing lexical analysis?
- Coffee Can Problem in TLA+ : cannot express a task
- JavaScript Spec - Relevant vs Surrounding Agent
- type inference not working in several declaration cases
- is deciding the causality requirements of the java memory model tractable?
- Why is the C# 9.0 "with expression" exclusive to records?
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)
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.