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

From CSE425S Wiki
Jump to navigation Jump to search
Line 20: Line 20:
 
===foldLeft===
 
===foldLeft===
 
  <nowiki>public static <E, R> R foldLeft(BiFunction<E, R, R> f, R acc, ImList<E> list) {{HofHof}}
 
  <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 27: Line 28:
 
===foldRight===
 
===foldRight===
 
  <nowiki>public static <E, R> R foldRight(BiFunction<E, R, R> f, R acc, ImList<E> list)</nowiki> {{HofHof}}
 
  <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.

Revision as of 20:32, 25 June 2023

Code To Implement

FilterHof

filter

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

SML List filter

FilterHofClients

class: FilterHofClients.java Java.png
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 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) {{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) 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

Fold Clients

class: FoldHofClients.java Java.png
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 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

MapHofApps

class: MapHofApps.java Java.png
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 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

FindHofClients

class: FindHofClients.java Java.png
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 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