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=
==Map==
+
==MapHof==
 +
===map===
 
{{JavaToImplement|MapHof|map|hof.map.assignment}}
 
{{JavaToImplement|MapHof|map|hof.map.assignment}}
  
 
  <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}}
  
 +
===apps===
 
{{JavaToImplement|MapHofApps|mapToLengths<br>mapToStrictlyLessThan|hof.map.assignment}}
 
{{JavaToImplement|MapHofApps|mapToLengths<br>mapToStrictlyLessThan|hof.map.assignment}}
  
Line 11: Line 13:
 
  <nowiki>public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)</nowiki>
 
  <nowiki>public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)</nowiki>
  
==Filter==
+
==FilterHof==
 +
===filter===
 
{{JavaToImplement|FilterHof|filter|hof.filter.assignment}}
 
{{JavaToImplement|FilterHof|filter|hof.filter.assignment}}
  
 
  <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}}
  
 +
===apps===
 
{{JavaToImplement|FilterHofApps|filterWordsWhichContainAllVowels<br>filterEvens|hof.map.assignment}}
 
{{JavaToImplement|FilterHofApps|filterWordsWhichContainAllVowels<br>filterEvens|hof.map.assignment}}
  
Line 22: Line 26:
 
  <nowiki>public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)</nowiki>
 
  <nowiki>public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)</nowiki>
  
 +
==FoldHof==
 +
<!--
 
Lexical scope is not unique to ML.  Nearly all programming languages use lexical scope, including Java.   
 
Lexical scope is not unique to ML.  Nearly all programming languages use lexical scope, including Java.   
  
Line 27: Line 33:
  
 
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).
 
+
-->
==Fold==
 
 
{{JavaToImplement|FoldHof|foldLeft<br>foldRight|hof.fold.assignment}}
 
{{JavaToImplement|FoldHof|foldLeft<br>foldRight|hof.fold.assignment}}
  
Line 48: Line 53:
 
===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>
 +
 +
==Find==
 +
 +
==Find Apps==
  
 
=Test=
 
=Test=

Revision as of 07:15, 14 February 2020

Code To Implement

MapHof

map

class: MapHof.java Java.png
methods: map
package: hof.map.assignment
source folder: src/main/java
public static <T, R> ImmutableList<R> map(Function<T, R> f, ImmutableList<T> list) Laurel Wreath

apps

class: MapHofApps.java Java.png
methods: mapToLengths
mapToStrictlyLessThan
package: hof.map.assignment
source folder: src/main/java
public static ImmutableList<Integer> mapToLengths(ImmutableList<String> texts)
public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)

FilterHof

filter

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

apps

class: FilterHofApps.java Java.png
methods: filterWordsWhichContainAllVowels
filterEvens
package: hof.map.assignment
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.assignment
source folder: src/main/java

SML List Reference

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.

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.

Fold Apps

class: FoldHofApps.java Java.png
methods: sum
countBetweenMinAndMaxExclusive
package: hof.map.assignment
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)

Find

Find Apps

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

Test

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