Difference between revisions of "Fold Assignment"
Jump to navigation
Jump to search
(Created page with "Lexical scope is not unique to ML. Nearly all programming languages use lexical scope, including Java. In this assignment we will build foldLeft (which can be easily built w...") |
|||
Line 1: | Line 1: | ||
− | Lexical scope is not unique to ML. Nearly all programming languages use lexical scope, including Java. | + | Lexical scope is not unique to ML. Nearly all programming languages use lexical scope, including Java. |
+ | |||
+ | First, we will build the utility methods: foldLeft (which can be easily built with tail recursion) and foldRight (which cannot). | ||
+ | |||
+ | Next, we will build some applications which use fold: sum (which does not require lexical scope) and countBetweenMinAndMaxExclusive (which does). | ||
+ | |||
+ | =Code To Implement= | ||
+ | ==Fold== | ||
+ | {{JavaToImplement|FoldHof|foldLeft<br>foldRight|hof.fold.assignment}} | ||
+ | |||
+ | <nowiki>public static <A, B> A foldLeft(BiFunction<A, B, A> f, A acc, ImmutableList<B> list)</nowiki> | ||
+ | |||
+ | <nowiki>public static <A, B> A foldRight(BiFunction<A, B, A> f, A acc, ImmutableList<B> list)</nowiki> | ||
+ | |||
+ | {{JavaToImplement|FoldHofApps|sum<br>countBetweenMinAndMaxExclusive|hof.map.assignment}} | ||
+ | |||
+ | <nowiki>public static int sum(ImmutableList<Integer> xs)</nowiki> | ||
+ | |||
+ | <nowiki>public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)</nowiki> | ||
+ | |||
+ | =Test= | ||
+ | {{TestSuite|FoldTestSuite|hof.fold.assignment}} |
Revision as of 14:48, 19 June 2019
Lexical scope is not unique to ML. Nearly all programming languages use lexical scope, including Java.
First, we will build the utility methods: foldLeft (which can be easily built with tail recursion) and foldRight (which cannot).
Next, we will build some applications which use fold: sum (which does not require lexical scope) and countBetweenMinAndMaxExclusive (which does).
Code To Implement
Fold
class: | FoldHof.java | |
methods: | foldLeft foldRight |
|
package: | hof.fold.assignment | |
source folder: | src/main/java |
public static <A, B> A foldLeft(BiFunction<A, B, A> f, A acc, ImmutableList<B> list)
public static <A, B> A foldRight(BiFunction<A, B, A> f, A acc, ImmutableList<B> list)
class: | FoldHofApps.java | |
methods: | sum countBetweenMinAndMaxExclusive |
|
package: | hof.map.assignment | |
source folder: | src/main/java |
public static int sum(ImmutableList<Integer> xs)
public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)
Test
class: | FoldTestSuite.java | |
package: | hof.fold.assignment | |
source folder: | src/test/java |