one-liner-instances alternatives and similar packages
Based on the "Web" category.
Alternatively, view one-liner-instances alternatives based on common mentions on social networks and blogs.
-
swagger-petstore
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
servant
Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documenting web applications and more! -
haskell-bitmex-rest
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
yesod-persistent
A RESTful Haskell web framework built on WAI. -
scotty
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository) -
neuron
Future-proof note-taking and publishing based on Zettelkasten (superseded by Emanote: https://github.com/srid/emanote) -
espial
Espial is an open-source, web-based bookmarking server. -
haskell-kubernetes
Haskell bindings to the Kubernetes API (via swagger-codegen) -
airship
Helium + Webmachine = Airship. A toolkit for building declarative, RESTful web apps. -
apecs-gloss
a fast, extensible, type driven Haskell ECS framework for games -
scalpel-core
A high level web scraping library for Haskell. -
digestive-functors
A general way to consume input using applicative functors -
tagsoup
Haskell library for parsing and extracting information from (possibly malformed) HTML/XML documents -
hbro
[Unmaintained] A minimal web-browser written and configured in Haskell. -
kubernetes-client-core
Haskell client for the kubernetes API. A work in progress. -
backprop
Heterogeneous automatic differentiation ("backpropagation") in Haskell -
engine-io
A Haskell server implementation of the Engine.IO and Socket.IO (1.0) protocols -
servant-elm
Automatically derive Elm functions to query servant webservices -
keera-hails-reactive-htmldom
Keera Hails: Haskell on Rails - Reactive Programming Framework for Interactive Haskell applications -
ghcjs-dom
Make Document Object Model (DOM) apps that run in any browser and natively using WebKitGtk
Build time-series-based applications quickly and at scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of one-liner-instances or a related project?
README
one-liner-instances
This package uses machinery from one-liner in order to provide default
implementations for methods from Num
, Fractional
, Floating
, Semigroup
,
Monoid
, Bounded
, Eq
, Ord
, and Random
. These will work for any types
(deriving Generic
) whose fields are all instances of that typeclass.
For Num
, Fractional
, Floating
, Semigroup
, and Monoid
, the types also
must have only a single constructor. Random
methods offer variants with
single constructors (for performance) and with multiple constructors.
So, gPlus
(generic addition) will work for:
data Tup1 a b = Tup1 a b -- requires Num a, Num b
data Tup2 a = Tup2 Int a -- requires Num a, Num b
data Tup3 = Tup3 Int Double
data Tup4 a b = Tup4 Int Double -- no constraint on a or b
But not on:
data Tup5 a = Tup2 String a -- String is not an instance of Num
These are implemented by applying the operation to every field.
Newtype wrappers
Similar to WrappedMonoid
and WarppedMonad
from base, some convenient
newtype wrappers are provided that will give free instances of Num
, etc. for
appropriate types:
If a
is a data type (deriving Generic
) with a single constructor whose
fields all have instances of Num
, then GNum a
has a Num
instance (and
same for Fractional
, Floating
, etc.).
If a
is a data type (deriving Generic
) with a single constructor whose
fields all have instances of Semigroup
, then GMonoid a
has a Semigroup
instance (and same for Monoid
).
If a
is a data type (deriving Generic
) whose fields all have instances of
Bounded
, then GBounded a
has a Bounded
instance.
If a
is a data type (deriving Generic
) whose fields all have instances of
Eq
, then GOrd a
has a Eq
instance (and same for
Ord
).
Comparisons
This package provides very similar functionality to generic-deriving.
There are a few major design differences between generic-deriving and one-liner, the package that this one is built on.
generic-deriving creates a separate "deriving" typeclass for every
typeclass one wants to generalize. So, there is a separate GMonoid
typeclass, a separate GEnum
typeclass, etc.
one-liner instead creates a single typeclass (ADTRecord
and Constraints
)
to unify all generalizable typeclasses. Both the generic Monoid
and generic
Num
instances are built upon the same Constraints
typeclass. From a
usability standpoint, one-liner allows one to easily create generic versions
of their own, custom typeclasses -- something that generic-deriving does not
help with.
one-liner-instances, however, is simply a package using the one-liner engine to provide generic instances for common classes where it is possible.
The main difference in practical usability between one-liner-instances and generic-deriving themselves are few, but are mainly:
- one-liner-instances has generic implementations for
Num
/Fractional
/Floating
, and generic-deriving doesn't. This is a superficial difference, however, since nothing fundamental is preventing generic-deriving from adding them in the future. one-liner-instances provides newtype wrappers that can automatically imbue appropriate types with instances, which can be used with the upcoming DerivingVia syntax to automatically derive instances, or just used on their own for convenience purposes.
generic-deriving does not aim to do this at this moment.
Integrates with the rest of the one-liner ecosystem, if one is already using it to provide constraints for custom typeclasses.