Built with shapeless

jeremyrsmith edited this page Nov 29, 2016 · 44 revisions

The following is an incomplete listing of libraries, applications, companies and projects which use shapeless in some form or another.

If your project isn't included in this list and you would like to add it, or if you would like to add additional information, please do.

Thanks to Alex Zhitnitsky (@tkfxin) of Takipi for contributing some of the data.

Libraries and applications using shapeless

Akka Stream Extensions

Akka Stream Extensions provides full type-safe & compile-time Akka-Stream graph building with multiple dispatch/route/merge based on types & Shapeless coproducts.

Anorm

Anorm is a simple data access layer that uses plain SQL to interact with the database and provides an API to parse and transform the resulting datasets.

argonaut-shapeless

argonaut-shapeless provides automatic codec generation for Argonaut.

Avro4s

Avro4s is a schema generator and serialization / deserialization library for use with Apache Avro.

Axle

Axle is a domain specific language for scientific cloud computing and visualization.

Banana RDF

banana-rdf is a library for RDF, SPARQL and Linked Data technologies in Scala.

Billy

Billy is a framework for testing local visual descriptors, eg SIFT, SURF, and BRIEF. It is similar to VLBenchmarks except it is written in Scala, plays well with OpenCV, and can run seamlessly on a desktop or a cluster.

bitcoin-lib

bitcoin-lib is a simple bitcoin library written in Scala.

Bond

Bond provides a mechanism to express validation constraints by using the type system.

case-app

case-app provides type-level & seamless command-line argument parsing for Scala.

computation-expressions

computation-expressions are an alternative for Scala for-comprehensions.

concatenative-lang

concatenative-lang is a simple concatentative language implemented using Shapeless.

delta

delta computes type safe differences for Scala ADTs.

diff

diff visually compares Scala data structures.

doobie

doobie is a pure functional JDBC layer for Scala.

Ensime

Ensime is the ENhanced Scala Interaction Mode for text Editors (especially Emacs).

enum

enum bridges the gap between Scala sealed traits and enumerations.

expressier

expressier is a type provider for regular expressions.

finagle-postgres

finagle-postgres is an asynchronous PostgreSQL client for Finagle.

Finch

Finch a scala idiomatic version of Finagle HTTP.

Frameless

Frameless is a way of using Spark SQL without completely giving up types.

Framian

Framian is a library which aims to provide simple abstractions for working with typed, ordered series data (eg. time series), as well as heterogeneous data tables (similar to R's data frame).

Gremlin-Scala

Gremlin-Scala a slim wrapper to make Gremlin - a JVM graph traversal library - usable from Scala.

Henkan

Henkan is a small library that provides generic and yet typesafe transformation between case classes and runtime data types

incompletes

incompletes demonstrates an implementation of Shapeless-powered automatic derivation for "incomplete" type class instances.

itinere

itinere Strongly typed bidirectional router

kittens

kittens is a Scala library which provides instances of type classes from the Cats library for arbitrary algebraic data types using shapeless-based automatic type class derivation.

Molecule

Molecule is a type safe and intuitive Scala query/modelling DSL for Datomic - the immutable database of facts.

Monocle

Monocle is a Lens library, or more generally an Optics library where Optics gather the concepts of Lens, Traversal, Optional, Prism and Iso. Monocle is strongly inspired by Haskell Lens.

msgpack4z

msgpack4z provides codecs for MessagePack.

ndim-tree

ndim-rtree is an N-Dimensional Generic R-Tree leveraging Shapeless and Spire.

Op-Rabbit

Op-Rabbit is an opinionated RabbitMQ library for Scala and Akka.

parboiled2

parboiled2 is a macro-based PEG parser generator for Scala 2.10+.

patchless

patchless provides a data type and typeclass for representing updates to case classes, and parsing them from JSON.

phantom

phantom is the Scala driver for Apache Cassandra/Datastax Enterprise.

picopickle

picopickle is a simple yet extensible shapeless-based serialization library.

play-json-derived-codecs

play-json-derived-codecs provides derivation of JSON codecs for algebraic data types.

play-products

play-products provides a more convenient syntax to work with cartesian structures.

PureCSV

PureCSV is a Scala library for working with the CSV format. The library gets rid of most of the boilerplate required to work with CSV.

PureConfig

PureConfig is a Scala library for loading configurations. The library works by generating the boilerplate required to load Scala types from the configuration files.

reactivemongo-derived-codecs

reactivemongo-derived-codecs provides derivation of BSON codecs for algebraic data types.

refined

refined is a Scala library for refining types with type-level predicates which constrain the set of values described by the refined type. It started as a port of the refined Haskell library.

reftree

reftree aims to provide visualizations for common functional data structures used in Scala. The visualizations are generated automatically from code, which allows to use them in an interactive fashion.

scala-cass

scala-cass is a wrapper for the Java Cassandra driver that allows extraction from a Row with Scala types, or directly into a case class. Also has utility functions for the Session to read/write to Cassandra directly to/from a case class.

scalacheck-shapeless

scalacheck-shapeless automates the generation of arbitrary case classes/ADTs with scalacheck and shapeless.

scalaz-transfigure

scalaz-transfigure A library for generically composing/lifting operations in a stack of monadic contexts.

Scaledn

Scaledn is a Scala EDN parser/serializer/validator.

Scalist

Scalist is Todoist API client library for Scala.

scodec

scodec is a suite of Scala libraries for working with binary data.

scrupal

scrupal is a reactive content management system currently in development.

Shameless

Shameless is an experiment studying type-dependent structures in category theory (functor, applicative, monoid) & provides a type-dependent FingerTree that could be used to improve compile-time heterogenous lists.

shapeless-contrib

shapeless-contrib provides automatic derivation of type class instances for Spire, ScalaCheck and Scalaz.

shapeless-feat

shapeless-feat is a port of testing-feat from Haskell to Scala. It allows fast enumeration of algebraic data types.

shapeless-refined-std

shapeless-refined-std enriches the standard library, collections mostly, using the typelevel collections: tuples, shapeless' HList and Sized.

Shapeless-Rules

shapeless-rules providing Shapeless validation rules for Julien Tournay's Generic validation API.

Slickless

slickless enables HList to be used as a row representation in a Slick Table.

spark-columnar

spark-columnar is a proof of concept project that uses Shapeless to optimize the in-memory data layout for RDDs in Spark.

specs2

specs2 is a library for writing executable software specifications in Scala.

spray

spray is an open-source toolkit for building REST/HTTP-based integration layers on top of Scala and Akka.

spray-json-shapeless

spray-json-shapeless automatically derives spray-json JsonFormats.

sqltyped

sqltyped converts SQL string literals into typed functions at compile time.

tabulate

tabulate is a Scala CSV parsing / serialisation library with a heavy emphasis on correctness and type safety.

utils-open validation

utils-open validation A library of standard validation functions and tools to compose them for single and multiple values.

zipper

zipper An implementation of Huet’s Zipper that is intended to be usable in many common scenarios.

Companies and projects using shapeless