Fold Assignment
Revision as of 14:48, 19 June 2019 by Dennis.cosgrove (talk | contribs)
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 |