Ra supports Pointfree style in Elm by providing various combinators to work with Predicates, Relations, Math, Functions, and Flow Control.
Pointfree can be abused, but when it is appropriate pointfree style is
@docs allPass, anyPass, both, either, complement, false, true
@docs lessThan, lessThanEqualTo, greaterThan, greaterThanEqualTo, equals
@docs adding, subtracting, dividedByInt, dividedByFloat, multiplying, negated
@docs ifElse, cond, condDefault, when, unless, until
@docs converge, converge3, convergeList, curry, curry3, flip, fnContraMap, fnContraMap2, fnContraMap3, uncurry, uncurry3
Ra is a subset of RamdaJS converted to Elm and excluding functions relating to topics indicated below. I originally toyed with naming this package simply R but that would create confusion with the R language.
Many of the RamdaJS functions or their equivalent functionality can be found in these packages.
RamdaJS features a number of functions to manipulate JavaScript objects. The closest equivalent in Elm would be Dict which already features all of the necessary functions either through Core or Dict.Extra. Further, Dict is not the same as Record and has a number of tradeoffs when compared to Records
There are several high quality Elm packages that provide optics.
Elm does not feature higher kinded types or typeclasses and so we cannot express abstract
map (Functor)chain (Monad)append (Monoid)sequence/traverse (Applicative, Traversable).NOTE We get better error messages, fewer opportunities for ambiguous code, and, very likely, a faster compiler in the exchange.