Difference between revisions of "Higher Order Functions Hall of Fame Assignment"

From CSE425S Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
=Code To Implement=
 
=Code To Implement=
==FilterHof==
+
==Higher-order Functions==
 +
{{JavaToImplement|Hof|filter<br/>foldLeft<br/>foldRight<br/>map<br/>find<br/>|hof.util.exercise}}
 +
 
 
===filter===
 
===filter===
{{JavaToImplement|Hof|filter|hof.util.exercise}}
 
  
 
  <nowiki>public static <E> ImList<E> filter(Predicate<E> predicate, ImList<E> list)</nowiki> {{HofHof}}
 
  <nowiki>public static <E> ImList<E> filter(Predicate<E> predicate, ImList<E> list)</nowiki> {{HofHof}}
Line 8: Line 9:
 
[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]
  
==FilterHofClients==
 
{{JavaToImplement|FilterHofClients|filterWordsWhichContainAllVowels<br>filterEvens|hof.filter.client.exercise}}
 
 
<nowiki>public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)</nowiki>
 
 
<nowiki>public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)</nowiki>
 
 
==FoldHof==
 
 
{{JavaToImplement|Hof|foldLeft<br>foldRight|hof.util.exercise}}
 
{{JavaToImplement|Hof|foldLeft<br>foldRight|hof.util.exercise}}
  
Line 34: Line 27:
 
[https://smlfamily.github.io/Basis/list.html#SIG:LIST.foldr:VAL SML List foldr]
 
[https://smlfamily.github.io/Basis/list.html#SIG:LIST.foldr:VAL SML List foldr]
  
==Fold Clients==
 
{{JavaToImplement|FoldHofClients|sum<br>countBetweenMinAndMaxExclusive|hof.map.client.exercise}}
 
===sum===
 
<nowiki>public static int sum(ImmutableList<Integer> xs)</nowiki>
 
===countBetweenMinAndMaxExclusive===
 
<nowiki>public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)</nowiki>
 
 
 
==MapHof==
 
 
===map===
 
===map===
 
{{JavaToImplement|Hof|map|hof.util.exercise}}
 
{{JavaToImplement|Hof|map|hof.util.exercise}}
Line 50: Line 34:
 
[https://smlfamily.github.io/Basis/list.html#SIG:LIST.map:VAL SML List map]
 
[https://smlfamily.github.io/Basis/list.html#SIG:LIST.map:VAL SML List map]
  
==MapHofApps==
+
===find===
{{JavaToImplement|MapHofApps|mapToLengths<br>mapToStrictlyLessThan|hof.map.client.exercise}}
+
{{JavaToImplement|Hof|find|hof.util.exercise}}
 +
 
 +
<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]
 +
 
 +
 
 +
==Clients==
 +
{{JavaToImplement|HofClients|filterWordsWhichContainAllVowels<br>filterEvens<br/>sum<br>countBetweenMinAndMaxExclusive<br/>mapToLengths<br>mapToStrictlyLessThan<br/>findFirstPalindrome|hof.clients.exercise}}
 +
 
 +
<nowiki>public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)</nowiki>
 +
 
 +
<nowiki>public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)</nowiki>
 +
 
 +
===sum===
 +
<nowiki>public static int sum(ImmutableList<Integer> xs)</nowiki>
 +
===countBetweenMinAndMaxExclusive===
 +
<nowiki>public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)</nowiki>
  
 
===mapToLengths===
 
===mapToLengths===
Line 60: Line 61:
 
===mapToStrictlyLessThan===
 
===mapToStrictlyLessThan===
 
  <nowiki>public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)</nowiki>
 
  <nowiki>public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)</nowiki>
 
 
==FindHof==
 
===find===
 
{{JavaToImplement|Hof|find|hof.util.exercise}}
 
 
<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]
 
 
==FindHofClients==
 
{{JavaToImplement|FindHofClients|findFirstPalindrome|hof.find.client.exercise}}
 
  
 
===findFirstPalindrome===
 
===findFirstPalindrome===

Revision as of 03:19, 12 October 2023

Code To Implement

Higher-order Functions

class: Hof.java Java.png
methods: filter
foldLeft
foldRight
map
find
package: hof.util.exercise
source folder: src/main/java

filter

public static <E> ImList<E> filter(Predicate<E> predicate, ImList<E> list) Laurel Wreath

SML List filter

class: Hof.java Java.png
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) Laurel Wreath
foldLeft(f, initial_value, [x1, x2, ..., xn])
returns f(xn,...,f(x2, f(x1, initial_value))...) or initial_value if the list is empty.

SML List foldl

foldRight

public static <E, R> R foldRight(BiFunction<E, R, R> f, R acc, ImList<E> list) Laurel Wreath
foldRight(f, initial_value, [x1, x2, ..., xn])
returns f(x1, f(x2, ..., f(xn, init)...)) or initial_value if the list is empty.

SML List foldr

map

class: Hof.java Java.png
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) Laurel Wreath

SML List map

find

class: Hof.java Java.png
methods: find
package: hof.util.exercise
source folder: src/main/java
public static <E> Optional<E> find(Predicate<E> predicate, ImList<E> list) Laurel Wreath

SML List map


Clients

class: HofClients.java Java.png
methods: filterWordsWhichContainAllVowels
filterEvens
sum
countBetweenMinAndMaxExclusive
mapToLengths
mapToStrictlyLessThan
findFirstPalindrome
package: hof.clients.exercise
source folder: src/main/java
public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)
public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)

sum

public static int sum(ImmutableList<Integer> xs)

countBetweenMinAndMaxExclusive

public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)

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)

findFirstPalindrome

public static Optional<String> findFirstPalindrome(ImmutableList<String> words)

Test

class: HigherOrderFunctionTestSuite.java Junit.png
package: hof
source folder: src/test/java

Map

class: MapTestSuite.java Junit.png
package: hof.map
source folder: src/test/java

Filter

class: FilterTestSuite.java Junit.png
package: hof.filter
source folder: src/test/java

Fold

class: FoldTestSuite.java Junit.png
package: hof.fold
source folder: src/test/java

Filter

class: FindTestSuite.java Junit.png
package: hof.find
source folder: src/test/java