functionaljava
libsum
| functionaljava | libsum | |
|---|---|---|
| 4 | 2 | |
| 1,619 | 12 | |
| 0.0% | - | |
| 0.0 | 0.0 | |
| about 3 years ago | over 11 years ago | |
| Java | C | |
| - | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
functionaljava
-
Algebraic Data Types for C99
Kotlin is JVM compatible and has ADTs.
Java has https://github.com/functionaljava/functionaljava
which is unsupported but stable.
-
How to write this (3) Java lines in a functional style?
A few side-notes about this code: - you need some sort of "wrapper" or "container" in order to use functional methods like map/flatMap/filter/etc on some object - here I used Optionalfor testing because it's available in standard Java: Optional describes an object that may or may not be available. - A more suitable "wrapper" for this use-case could have been Try which describes the result of an execution that may succeed or fail, see vavr has a Try for example, functionaljava has Either - map transforms A -> B (would make sense for your mapToUser) whereas flatMap transforms A -> Optional (or whichever "wrapper", would make sense for your userService.save if suppose the saving operation can fail) - Here is a working example for you :) - practise exercises: 1- replace the "wrapper" Optional with List, there is almost no change of code, this now gives you the ability to process lists of users 2- import vavr and replace the "wrapper" Optional with Try, there is almost no change of code, this now gives you the ability to process operations that may fail - Enjoy functional programming, you'll find java is rather verbose and quickly gets clunky for FP, consider switching to another language
-
Show HN: Pidove, an Alternative to the Java Streams API
? Sometimes passing a lambda (or other function) as an argument is a simpler approach to specialization than defining a subclass. That I think is mainstream and accepted in Java today.
There is a lot more to "functional programming" than that, such as the use of persistent collections. In some cases (such as managing the symbol table in a compiler) those methods lead to good efficiency and great simplification, in other cases they are ways to make easy problems punishingly hard.
pidove builds on top of ordinary Java Collections and doesn't push more exotic approaches as does
http://www.functionaljava.org/
-
OCaml modules vs C#/Java OOP
We can simulate using type components in modules in Java by using parametrized classes, the type parameters correspond to type declarations in a ML signature. I found an example monoid definition in Java if you want to see how that looks. You can see that the "functors" are kept inside the class definition, though I don't know if it's necessary, I don't really know Java. You probably get weaker abstraction, because you can't have some monoid with an unknown carrier type, you always know the carrier type - it's just the type parameter A in Monoid.
libsum
-
Algebraic Data Types for C99
Definitely looks nicer and probably works better than my older attempt [1], but uses 9x more code and depends on the awesome buy scary Meta99 macro toolkit. I think libsum is a good intro if you want to see how algebraic data types work underneath.
[1] https://github.com/naasking/libsum
-
Datatype99: C99 with Sum Types, v0.1.0
I created [something similar](https://github.com/naasking/libsum) awhile back:
SUM(foo) {
What are some alternatives?
property-based-matrix-testing-tutorial - Property-based matrix testing in Java
epilepsy - A functional language for C99 preprocessor metaprogramming [Moved to: https://github.com/Hirrolot/metalang99]
purefun - Functional Programming library for Java
ableC-template-algebraic-data-types - ableC extension for algebraic data types with C++-style templating
JFXShader - Allows custom effect shaders in JavaFX
lispx - Ultralight Lisp for the Web