|
35 | 35 | <span class="icon-bar"></span>
|
36 | 36 | <span class="icon-bar"></span>
|
37 | 37 | </button>
|
38 |
| - <a class="navbar-brand" href="/">Functional Java</a> |
| 38 | + <a class="navbar-brand" href="/"><img src="/img/white-lambda6.png" height="20"/> Functional Java</a> |
39 | 39 | </div>
|
40 | 40 |
|
41 | 41 | <!-- Collect the nav links, forms, and other content for toggling -->
|
|
59 | 59 | <!-- Begin page content -->
|
60 | 60 | <div class="container">
|
61 | 61 |
|
62 |
| -<div> |
63 |
| - |
64 |
| - <img src="/img/logo-600x144.png"/> |
65 |
| - |
66 |
| - <p> |
67 |
| - Functional Java is an open source library that seeks to improve the experience of using the Java programming |
68 |
| - language in a production environment. The library implements several advanced programming concepts that assist |
69 |
| - in achieving composition-oriented development. The JAR file will work with your Java 1.5 project without any |
70 |
| - additional effort. Functional Java is currently written using vanilla Java 1.5 syntax and requires no external supporting libraries. Lambdas introduced in Java 8 may be used in future development, these will be backported using the <a href="https://github.com/orfjackal/retrolambda">Retro Lambda</a> project to be compatible with pre Java 8 bytecode. |
71 |
| - </p> |
72 |
| - <p> |
73 |
| - Functional Java also serves as a platform for learning functional |
74 |
| - programming concepts by introducing these concepts using a familiar language. The library is |
75 |
| - intended for use in production applications and is thoroughly tested using the technique of |
76 |
| - automated specification-based testing with |
77 |
| - <a href="http://www.scalacheck.org/">ScalaCheck</a>. |
78 |
| - </p> |
79 |
| - |
80 |
| - <p> |
81 |
| - Functional Java includes the following features: |
82 |
| - </p> |
83 |
| - <ul> |
84 |
| - <li> |
85 |
| - Fully operational Actors for parallel computations (<code>fj.control.parallel</code>) and layered abstractions |
86 |
| - such as parallel-map, map-reduce, parallel-zip. |
87 |
| - </li> |
88 |
| - <li> |
89 |
| - A package (<code>fj.data.fingertrees</code>) providing 2-3 finger trees for a functional representation of |
90 |
| - persistent sequences supporting access to the ends in amortized O(1) time. |
91 |
| - </li> |
92 |
| - <li> |
93 |
| - Type-safe heterogeneous list (<code>fj.data.hlist</code>) for lists of elements of differing types without |
94 |
| - sacrificing type-safety. |
95 |
| - </li> |
96 |
| - <li> |
97 |
| - Monadic parser combinators for writing parsers by combining smaller parsers using composition. |
98 |
| - </li> |
99 |
| - <li> |
100 |
| - Conversion of data types to/from standard Java types. |
101 |
| - </li> |
102 |
| - <li> |
103 |
| - Immutable, in-memory singly linked list (<code>fj.data.List</code>). |
104 |
| - </li> |
105 |
| - <li> |
106 |
| - Immutable lazy singly linked list (<code>fj.data.Stream</code>). |
107 |
| - </li> |
108 |
| - <li> |
109 |
| - Array wrapper (<code>fj.data.Array</code>). |
110 |
| - </li> |
111 |
| - <li> |
112 |
| - Optional value — <em>type-safe null</em> (<code>fj.data.Option</code>). |
113 |
| - </li> |
114 |
| - <li> |
115 |
| - Disjoint union data type — <em>compositional exception handling</em> (<code>fj.data.Either</code>). |
116 |
| - </li> |
117 |
| - <li> |
118 |
| - Monoid (<code>fj.Monoid</code>). |
119 |
| - </li> |
120 |
| - <li> |
121 |
| - Functions with arity 1 to 8. |
122 |
| - </li> |
123 |
| - <li> |
124 |
| - Products of 1 to 8. |
125 |
| - </li> |
126 |
| - <li> |
127 |
| - Configurable equality and hash-code for HashMap and HashSet. |
128 |
| - </li> |
129 |
| - <li> |
130 |
| - Natural number data type (<code>fj.data.Natural</code>). |
131 |
| - </li> |
132 |
| - <li> |
133 |
| - Immutable set implementation using a red/black tree. |
134 |
| - </li> |
135 |
| - <li> |
136 |
| - Immutable multi-way tree — aka rose tree (<code>fj.data.Tree</code>). |
137 |
| - </li> |
138 |
| - <li> |
139 |
| - Immutable tree-map using a red/black tree implementation (<code>fj.data.TreeMap</code>). |
140 |
| - </li> |
141 |
| - <li> |
142 |
| - Zipper implementations for streams and trees. |
143 |
| - </li> |
144 |
| - <li> |
145 |
| - Automated specification-based testing framework (<code>fj.test</code>). |
146 |
| - </li> |
147 |
| - </ul> |
148 |
| - <p> |
149 |
| - Functional Java includes usage examples, here is one such example |
150 |
| - (import statements omitted) that maps a transformation across an array by adding 42 to |
151 |
| - each element. |
152 |
| - </p> |
153 |
| - |
154 |
| - |
155 |
| - <pre> |
156 |
| - <code class="java"> |
157 |
| - final Array<Integer> a = array(1, 2, 3); |
158 |
| - final Array<Integer> b = a.map(i -> i + 42); |
159 |
| - arrayShow(intShow).println(b); // {43,44,45} |
160 |
| - </code> |
161 |
| - </pre> |
162 |
| - |
| 62 | + <div class="row"> |
| 63 | + <div class="col-md-12"> |
| 64 | + <article> |
| 65 | + <p><div class="imageblock"> |
| 66 | +<div class="content"> |
| 67 | +<img src="/img/logo-600x144.png" alt="logo 600x144"> |
163 | 68 | </div>
|
164 |
| - |
| 69 | +</div> |
| 70 | +<div class="paragraph"> |
| 71 | +<p>Functional Java is an open source library that supports functional programming in Java. The library implements numerous basic and advanced programming abstractions that assist composition oriented development. Functional Java also serves as a platform for learning functional programming concepts by introducing these concepts using a familiar language.</p> |
| 72 | +</div> |
| 73 | +<div class="paragraph"> |
| 74 | +<p>The library is intended for use in production applications and is thoroughly tested using the technique of automated specification-based testing with <a href="http://www.scalacheck.org">ScalaCheck</a>. Functional Java is compiled with Java 8 targeting Java 7 bytecode. The use of lambdas within the project are backported with the <a href="https://github.com/orfjackal/retrolambda">Retro Lambda</a> library, supporting Java versions 5 to 8 and beyond.</p> |
| 75 | +</div> |
| 76 | +<div class="paragraph"> |
| 77 | +<p>Features:</p> |
| 78 | +</div> |
| 79 | +<div class="ulist"> |
| 80 | +<ul> |
| 81 | +<li> |
| 82 | +<p>Fully operational Actors for parallel computations (<code>fj.control.parallel</code>) and layered abstractions such as parallel-map, map-reduce, parallel-zip.</p> |
| 83 | +</li> |
| 84 | +<li> |
| 85 | +<p>A package (<code>fj.data.fingertrees</code>) providing 2-3 finger trees for a functional representation of persistent sequences supporting access to the ends in amortized O(1) time.</p> |
| 86 | +</li> |
| 87 | +<li> |
| 88 | +<p>Type-safe heterogeneous list (<code>fj.data.hlist</code>) for lists of elements of differing types without sacrificing type-safety.</p> |
| 89 | +</li> |
| 90 | +<li> |
| 91 | +<p>Monadic parser combinators for writing parsers by combining smaller parsers using composition.</p> |
| 92 | +</li> |
| 93 | +<li> |
| 94 | +<p>Conversion of data types to/from standard Java types.</p> |
| 95 | +</li> |
| 96 | +<li> |
| 97 | +<p>Immutable, in-memory singly linked list (<code>fj.data.List</code>).</p> |
| 98 | +</li> |
| 99 | +<li> |
| 100 | +<p>Immutable lazy singly linked list (<code>fj.data.Stream</code>).</p> |
| 101 | +</li> |
| 102 | +<li> |
| 103 | +<p>Array wrapper (<code>fj.data.Array</code>).</p> |
| 104 | +</li> |
| 105 | +<li> |
| 106 | +<p>Optional value - <em>type-safe null</em> (<code>fj.data.Option</code>).</p> |
| 107 | +</li> |
| 108 | +<li> |
| 109 | +<p>Disjoint union data type - <em>compositional exception handling</em> (<code>fj.data.Either</code>).</p> |
| 110 | +</li> |
| 111 | +<li> |
| 112 | +<p>Monoid (<code>fj.Monoid</code>).</p> |
| 113 | +</li> |
| 114 | +<li> |
| 115 | +<p>Functions with arity 1 to 8.</p> |
| 116 | +</li> |
| 117 | +<li> |
| 118 | +<p>Products of 1 to 8.</p> |
| 119 | +</li> |
| 120 | +<li> |
| 121 | +<p>Configurable equality and hash-code for HashMap and HashSet.</p> |
| 122 | +</li> |
| 123 | +<li> |
| 124 | +<p>Natural number data type (<code>fj.data.Natural</code>).</p> |
| 125 | +</li> |
| 126 | +<li> |
| 127 | +<p>Immutable set implementation using a red/black tree.</p> |
| 128 | +</li> |
| 129 | +<li> |
| 130 | +<p>Immutable multi-way tree - aka rose tree (<code>fj.data.Tree</code>).</p> |
| 131 | +</li> |
| 132 | +<li> |
| 133 | +<p>Immutable tree-map using a red/black tree implementation (<code>fj.data.TreeMap</code>).</p> |
| 134 | +</li> |
| 135 | +<li> |
| 136 | +<p>Zipper implementations for streams and trees.</p> |
| 137 | +</li> |
| 138 | +<li> |
| 139 | +<p>Automated specification-based testing framework (<code>fj.test</code>).</p> |
| 140 | +</li> |
| 141 | +</ul> |
| 142 | +</div> |
| 143 | +<div class="paragraph"> |
| 144 | +<p>Functional Java includes usage examples, here is one such example (import statements omitted) that maps a transformation across an array by adding 42 to each element.</p> |
| 145 | +</div> |
| 146 | +<div class="listingblock"> |
| 147 | +<div class="content"> |
| 148 | +<pre class="prettyprint linenums java language-java"><code>final Array<Integer> a = array(1, 2, 3); |
| 149 | +final Array<Integer> b = a.map(i -> i + 42); |
| 150 | +arrayShow(intShow).println(b); // {43,44,45}</code></pre> |
| 151 | +</div> |
| 152 | +</div></p> |
| 153 | + </article> |
| 154 | + </div> <!-- /.col-md-12 --> |
| 155 | + </div> <!-- /.row --> |
165 | 156 |
|
166 | 157 | </div><!-- /.container -->
|
167 | 158 |
|
|
170 | 161 | <hr>
|
171 | 162 | <div class="row">
|
172 | 163 | <div class="col-xs-10">
|
173 |
| - <p class="text-muted credit">© 2014 | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> | Baked with <a href="http://jbake.org">JBake v2.3.0</a> | <i title="Linux" class="fa fa-linux"></i></p> |
| 164 | + <p class="text-muted credit">© 2014 | Mixed with <a href="http://getbootstrap.com/">Bootstrap v3.1.1</a> | Baked with <a href="http://jbake.org">JBake v2.3.1</a> | <i title="Linux" class="fa fa-linux"></i></p> |
174 | 165 | </div>
|
175 | 166 | <div class="col-xs-2 gotop">
|
176 | 167 | <a href="#"><i class="fa fa-arrow-circle-up"> top</i></a>
|
|
0 commit comments