diff --git a/core/build.gradle b/core/build.gradle index 13d06114..50515a88 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -6,6 +6,11 @@ ext { archivesBaseName = project.projectName dependencies { + annotationProcessor "org.derive4j:derive4j:0.13.0" + annotationProcessor "org.derive4j:derive4j-fj:0.2" + compileOnly "org.derive4j:derive4j-annotation:0.13.0" + compileOnly "com.google.auto.value:auto-value-annotations:1.6.2" + annotationProcessor "com.google.auto.value:auto-value:1.6.2" testCompile dependencyJunit testCompile 'com.h2database:h2:1.4.197' testCompile 'commons-dbutils:commons-dbutils:1.7' diff --git a/core/src/main/java/fj/data/LazyList.java b/core/src/main/java/fj/data/LazyList.java new file mode 100644 index 00000000..d00cb54c --- /dev/null +++ b/core/src/main/java/fj/data/LazyList.java @@ -0,0 +1,14 @@ +package fj.data; + +import fj.F0; +import fj.F2; +import org.derive4j.Data; +import org.derive4j.FieldNames; +import org.derive4j.Flavour; + +@Data(flavour = Flavour.FJ) +public interface LazyList { + + X list(F0 nil, @FieldNames({ "head", "tail" }) F2, X> cons); + +} diff --git a/core/src/main/java/fj/data/LazyList2.java b/core/src/main/java/fj/data/LazyList2.java new file mode 100644 index 00000000..e2256b55 --- /dev/null +++ b/core/src/main/java/fj/data/LazyList2.java @@ -0,0 +1,19 @@ +package fj.data; + +import fj.F0; +import fj.F2; +import org.derive4j.Data; +import org.derive4j.FieldNames; +import org.derive4j.Flavour; + +@Data(flavour = Flavour.FJ) +public abstract class LazyList2 { + + interface Cases { + X nil(); + X cons(A head, LazyList2 tail); + } + + public abstract X list(Cases cases); + +}