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

From CSE425S Wiki
Jump to navigation Jump to search
Line 2: Line 2:
 
==MapHof==
 
==MapHof==
 
===map===
 
===map===
{{JavaToImplement|MapHof|map|hof.map.assignment}}
+
{{JavaToImplement|MapHof|map|hof.map.util.exercise}}
  
 
  <nowiki>public static <T, R> ImmutableList<R> map(Function<T, R> f, ImmutableList<T> list)</nowiki> {{HofHof}}
 
  <nowiki>public static <T, R> ImmutableList<R> map(Function<T, R> f, ImmutableList<T> list)</nowiki> {{HofHof}}
Line 9: Line 9:
  
 
==MapHofApps==
 
==MapHofApps==
{{JavaToImplement|MapHofApps|mapToLengths<br>mapToStrictlyLessThan|hof.map.assignment}}
+
{{JavaToImplement|MapHofApps|mapToLengths<br>mapToStrictlyLessThan|hof.map.client.exercise}}
  
 
===mapToLengths===
 
===mapToLengths===
Line 21: Line 21:
 
==FilterHof==
 
==FilterHof==
 
===filter===
 
===filter===
{{JavaToImplement|FilterHof|filter|hof.filter.assignment}}
+
{{JavaToImplement|FilterHof|filter|hof.filter.util.exercise}}
  
 
  <nowiki>public static <E> ImmutableList<E> filter(Predicate<E> predicate, ImmutableList<E> list)</nowiki> {{HofHof}}
 
  <nowiki>public static <E> ImmutableList<E> filter(Predicate<E> predicate, ImmutableList<E> list)</nowiki> {{HofHof}}
Line 28: Line 28:
  
 
==FilterHofApps==
 
==FilterHofApps==
{{JavaToImplement|FilterHofApps|filterWordsWhichContainAllVowels<br>filterEvens|hof.map.assignment}}
+
{{JavaToImplement|FilterHofApps|filterWordsWhichContainAllVowels<br>filterEvens|hof.map.client.exercise}}
  
 
  <nowiki>public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)</nowiki>
 
  <nowiki>public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)</nowiki>
Line 42: Line 42:
 
Next, we will build some applications which use fold: sum (which does not require lexical scope) and countBetweenMinAndMaxExclusive (which does).
 
Next, we will build some applications which use fold: sum (which does not require lexical scope) and countBetweenMinAndMaxExclusive (which does).
 
-->
 
-->
{{JavaToImplement|FoldHof|foldLeft<br>foldRight|hof.fold.assignment}}
+
{{JavaToImplement|FoldHof|foldLeft<br>foldRight|hof.fold.util.exercise}}
  
 
===foldLeft===
 
===foldLeft===
Line 59: Line 59:
  
 
==Fold Apps==
 
==Fold Apps==
{{JavaToImplement|FoldHofApps|sum<br>countBetweenMinAndMaxExclusive|hof.map.assignment}}
+
{{JavaToImplement|FoldHofApps|sum<br>countBetweenMinAndMaxExclusive|hof.map.client.exercise}}
 
===sum===
 
===sum===
 
  <nowiki>public static int sum(ImmutableList<Integer> xs)</nowiki>
 
  <nowiki>public static int sum(ImmutableList<Integer> xs)</nowiki>
Line 67: Line 67:
 
==FindHof==
 
==FindHof==
 
===find===
 
===find===
{{JavaToImplement|FindHof|find|hof.find.assignment}}
+
{{JavaToImplement|FindHof|find|hof.find.util.exercise}}
  
 
  <nowiki>public static <E> Optional<E> find(Predicate<E> predicate, ImmutableList<E> list)</nowiki> {{HofHof}}
 
  <nowiki>public static <E> Optional<E> find(Predicate<E> predicate, ImmutableList<E> list)</nowiki> {{HofHof}}
Line 74: Line 74:
  
 
==FindHofApps==
 
==FindHofApps==
{{JavaToImplement|FindHofApps|findFirstPalindrome|hof.find.assignment}}
+
{{JavaToImplement|FindHofApps|findFirstPalindrome|hof.find.client.exercise}}
  
 
===findFirstPalindrome===
 
===findFirstPalindrome===

Revision as of 03:44, 15 February 2022

Code To Implement

MapHof

map

class: MapHof.java Java.png
methods: map
package: hof.map.util.exercise
source folder: src/main/java
public static <T, R> ImmutableList<R> map(Function<T, R> f, ImmutableList<T> 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)

FilterHof

filter

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

SML List filter

FilterHofApps

class: FilterHofApps.java Java.png
methods: filterWordsWhichContainAllVowels
filterEvens
package: hof.map.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: FoldHof.java Java.png
methods: foldLeft
foldRight
package: hof.fold.util.exercise
source folder: src/main/java

foldLeft

public static <A, B> A foldLeft(BiFunction<A, B, A> f, A acc, ImmutableList<B> 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 <A, B> A foldRight(BiFunction<A, B, A> f, A acc, ImmutableList<B> 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 Apps

class: FoldHofApps.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)

FindHof

find

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

SML List map

FindHofApps

class: FindHofApps.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.assignment
source folder: src/test/java

Map

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

Filter

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

Fold

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

Filter

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