Difference between revisions of "Higher Order Functions Hall of Fame Assignment"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
=Code To Implement= | =Code To Implement= | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==FilterHof== | ==FilterHof== | ||
===filter=== | ===filter=== | ||
− | {{JavaToImplement| | + | {{JavaToImplement|Hof|filter|hof.util.exercise}} |
− | <nowiki>public static <E> | + | <nowiki>public static <E> ImList<E> filter(Predicate<E> predicate, ImList<E> list)</nowiki> {{HofHof}} |
[https://smlfamily.github.io/Basis/list.html#SIG:LIST.filter:VAL SML List filter] | [https://smlfamily.github.io/Basis/list.html#SIG:LIST.filter:VAL SML List filter] | ||
Line 35: | Line 16: | ||
==FoldHof== | ==FoldHof== | ||
− | + | {{JavaToImplement|Hof|foldLeft<br>foldRight|hof.util.exercise}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | {{JavaToImplement| | ||
===foldLeft=== | ===foldLeft=== | ||
− | <nowiki>public static < | + | <nowiki>public static <E, R> R foldLeft(BiFunction<E, R, R> f, R acc, ImList<E> list) {{HofHof}} |
:<code>foldLeft(f, initial_value, [x1, x2, ..., xn])</code> | :<code>foldLeft(f, initial_value, [x1, x2, ..., xn])</code> | ||
:returns <code>f(xn,...,f(x2, f(x1, initial_value))...)</code> or <code>initial_value</code> if the list is empty. | :returns <code>f(xn,...,f(x2, f(x1, initial_value))...)</code> or <code>initial_value</code> if the list is empty. | ||
Line 52: | Line 26: | ||
===foldRight=== | ===foldRight=== | ||
− | <nowiki>public static < | + | <nowiki>public static <E, R> R foldRight(BiFunction<E, R, R> f, R acc, ImList<E> list)</nowiki> {{HofHof}} |
:<code>foldRight(f, initial_value, [x1, x2, ..., xn])</code> | :<code>foldRight(f, initial_value, [x1, x2, ..., xn])</code> | ||
:returns <code>f(x1, f(x2, ..., f(xn, init)...))</code> or <code>initial_value</code> if the list is empty. | :returns <code>f(x1, f(x2, ..., f(xn, init)...))</code> or <code>initial_value</code> if the list is empty. | ||
Line 64: | Line 38: | ||
===countBetweenMinAndMaxExclusive=== | ===countBetweenMinAndMaxExclusive=== | ||
<nowiki>public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)</nowiki> | <nowiki>public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)</nowiki> | ||
+ | |||
+ | |||
+ | ==MapHof== | ||
+ | ===map=== | ||
+ | {{JavaToImplement|Hof|map|hof.util.exercise}} | ||
+ | |||
+ | <nowiki>public static <E, R> ImList<R> map(Function<E, R> f, ImList<E> list)</nowiki> {{HofHof}} | ||
+ | |||
+ | [https://smlfamily.github.io/Basis/list.html#SIG:LIST.map:VAL SML List map] | ||
+ | |||
+ | ==MapHofApps== | ||
+ | {{JavaToImplement|MapHofApps|mapToLengths<br>mapToStrictlyLessThan|hof.map.client.exercise}} | ||
+ | |||
+ | ===mapToLengths=== | ||
+ | <nowiki>public static ImmutableList<Integer> mapToLengths(ImmutableList<String> texts)</nowiki> | ||
+ | |||
+ | Use the [https://docs.oracle.com/javase/8/docs/api/java/lang/String.html String] class's [https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#length-- length()] method. | ||
+ | |||
+ | ===mapToStrictlyLessThan=== | ||
+ | <nowiki>public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)</nowiki> | ||
+ | |||
==FindHof== | ==FindHof== | ||
===find=== | ===find=== | ||
− | {{JavaToImplement| | + | {{JavaToImplement|Hof|find|hof.util.exercise}} |
− | <nowiki>public static <E> Optional<E> find(Predicate<E> predicate, | + | <nowiki>public static <E> Optional<E> find(Predicate<E> predicate, ImList<E> list)</nowiki> {{HofHof}} |
[https://smlfamily.github.io/Basis/list.html#SIG:LIST.find:VAL SML List map] | [https://smlfamily.github.io/Basis/list.html#SIG:LIST.find:VAL SML List map] |
Revision as of 20:28, 25 June 2023
Contents
Code To Implement
FilterHof
filter
class: | Hof.java | ![]() |
methods: | filter | |
package: | hof.util.exercise | |
source folder: | src/main/java |
public static <E> ImList<E> filter(Predicate<E> predicate, ImList<E> list)![]()
FilterHofClients
class: | FilterHofClients.java | ![]() |
methods: | filterWordsWhichContainAllVowels filterEvens |
|
package: | hof.filter.client.exercise | |
source folder: | src/main/java |
public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)
public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)
FoldHof
class: | Hof.java | ![]() |
methods: | foldLeft foldRight |
|
package: | hof.util.exercise | |
source folder: | src/main/java |
foldLeft
public static <E, R> R foldLeft(BiFunction<E, R, R> f, R acc, ImList<E> list) {{HofHof}} :<code>foldLeft(f, initial_value, [x1, x2, ..., xn])</code> :returns <code>f(xn,...,f(x2, f(x1, initial_value))...)</code> or <code>initial_value</code> if the list is empty. [https://smlfamily.github.io/Basis/list.html#SIG:LIST.foldl:VAL SML List foldl] ===foldRight=== <nowiki>public static <E, R> R foldRight(BiFunction<E, R, R> f, R acc, ImList<E> list)![]()
foldRight(f, initial_value, [x1, x2, ..., xn])
- returns
f(x1, f(x2, ..., f(xn, init)...))
orinitial_value
if the list is empty.
Fold Clients
class: | FoldHofClients.java | ![]() |
methods: | sum countBetweenMinAndMaxExclusive |
|
package: | hof.map.client.exercise | |
source folder: | src/main/java |
sum
public static int sum(ImmutableList<Integer> xs)
countBetweenMinAndMaxExclusive
public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)
MapHof
map
class: | Hof.java | ![]() |
methods: | map | |
package: | hof.util.exercise | |
source folder: | src/main/java |
public static <E, R> ImList<R> map(Function<E, R> f, ImList<E> list)![]()
MapHofApps
class: | MapHofApps.java | ![]() |
methods: | mapToLengths mapToStrictlyLessThan |
|
package: | hof.map.client.exercise | |
source folder: | src/main/java |
mapToLengths
public static ImmutableList<Integer> mapToLengths(ImmutableList<String> texts)
Use the String class's length() method.
mapToStrictlyLessThan
public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)
FindHof
find
class: | Hof.java | ![]() |
methods: | find | |
package: | hof.util.exercise | |
source folder: | src/main/java |
public static <E> Optional<E> find(Predicate<E> predicate, ImList<E> list)![]()
FindHofClients
class: | FindHofClients.java | ![]() |
methods: | findFirstPalindrome | |
package: | hof.find.client.exercise | |
source folder: | src/main/java |
findFirstPalindrome
public static Optional<String> findFirstPalindrome(ImmutableList<String> words)
Test
class: | HigherOrderFunctionTestSuite.java | ![]() |
package: | hof | |
source folder: | src/test/java |
Map
class: | MapTestSuite.java | ![]() |
package: | hof.map | |
source folder: | src/test/java |
Filter
class: | FilterTestSuite.java | ![]() |
package: | hof.filter | |
source folder: | src/test/java |
Fold
class: | FoldTestSuite.java | ![]() |
package: | hof.fold | |
source folder: | src/test/java |
Filter
class: | FindTestSuite.java | ![]() |
package: | hof.find | |
source folder: | src/test/java |