shade alternatives and similar packages
Based on the "Web" category.
Alternatively, view shade alternatives based on common mentions on social networks and blogs.
-
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. -
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. -
scotty
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository) -
servant
Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documenting web applications and more! -
neuron
Future-proof note-taking and publishing based on Zettelkasten (superseded by Emanote: https://github.com/srid/emanote) -
haskell-kubernetes
Haskell bindings to the Kubernetes API (via swagger-codegen) -
apecs-gloss
a fast, extensible, type driven Haskell ECS framework for games -
airship
Helium + Webmachine = Airship. A toolkit for building declarative, RESTful web apps. -
servant-elm
Automatically derive Elm functions to query servant webservices -
tagsoup
Haskell library for parsing and extracting information from (possibly malformed) HTML/XML documents -
digestive-functors
A general way to consume input using applicative functors -
backprop
Heterogeneous automatic differentiation ("backpropagation") in Haskell -
kubernetes-client-core
Haskell client for the kubernetes API. A work in progress. -
keera-hails-reactive-htmldom
Keera Hails: Haskell on Rails - Reactive Programming Framework for Interactive Haskell applications -
engine-io
A Haskell server implementation of the Engine.IO and Socket.IO (1.0) protocols -
ghcjs-dom
Make Document Object Model (DOM) apps that run in any browser and natively using WebKitGtk -
ghcjs-base
base library for GHCJS for JavaScript interaction and marshalling, used by higher level libraries like JSC
Collect and Analyze Billions of Data Points in Real Time
* 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 shade or a related project?
README
{-# LANGUAGE MultiParamTypeClasses #-}
module Main ( main ) where
import Data.Functor.Identity
import Control.Monad
import Control.Monad.Shade
A shade can be used to save heterogeneous types in containers with the same type e.g. using a type-class as a common denominator:
showshade :: Applicative m => Show a => a -> Shade m String
showshade a = pure (show a)
hetero :: Shade Identity String
hetero = mconcat [ showshade () , showshade 2 , showshade "hej" ]
The values inside a shade are stored in a context. We can swap this context by defining a transfer function:
idToIO :: Identity b -> IO b
idToIO (Identity v) = putStrLn "Transferring" *> pure v
The context is switched using transfer
and we can access the value in
this new context by using shadow
:
runInIO :: Shade Identity a -> IO a
runInIO = shadow . transfer idToIO
The point to note about this example is that the values are stored in an shades with the identity as context. We can manipulate this context including the value. We cannot, however inspect the value since it is universally quantified.
noisy :: String -> Shade Identity (IO ())
noisy s = pure (putStrLn s)
main :: IO ()
main = do
r <- runInIO hetero
putStrLn r
join . runInIO . mconcat . map (noisy . show) $ [0..10]