From 009888e1edd6de64adc07364852031b03997ca40 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Mon, 1 Feb 2016 15:59:00 +0100 Subject: [PATCH 1/3] Add slides --- Makefile | 8 +++ README.md | 3 ++ slides.pdf | Bin 0 -> 71174 bytes slides.pdfpc | 75 ++++++++++++++++++++++++++++ slides.tex | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 223 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100644 slides.pdf create mode 100644 slides.pdfpc create mode 100644 slides.tex diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..96115ec2c --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +all: slides + +slides: + lualatex --shell-escape slides.tex + +clean: + rm -f slides.aux slides.log slides.nav \ + slides.out slides.toc slides.snm diff --git a/README.md b/README.md new file mode 100644 index 000000000..ebeca2be8 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +These are the slides for my presentation about servant at Oslo Haskell. + +www.meetup.com/Oslo-Haskell/events/227107530/ diff --git a/slides.pdf b/slides.pdf new file mode 100644 index 0000000000000000000000000000000000000000..842a667e1bcc0e8115206e8a28ab57029f8e26e2 GIT binary patch literal 71174 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 z

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 TscBs12BwClT&k+B{%%|VJ7ovb literal 0 HcmV?d00001 diff --git a/slides.pdfpc b/slides.pdfpc new file mode 100644 index 000000000..ed4600376 --- /dev/null +++ b/slides.pdfpc @@ -0,0 +1,75 @@ +[file] +slides.pdf +[font_size] +10897 +[notes] +### 1 +13### 2 +Let's talk about servant, which is several things: +API description DSL, we'll speak about how this DSL works +and why it's at the type level + +Interpretations of the types resulting from that DSL, for example in +web servers or API clients + +Servant is commonly used or implementing services with APIs, or for accessing +other APIs with a simple, typed client +### 3 +Why type-level DSLs? +Type-level DSL: express *something*, e.g. endpoints of API, on type level by combining types. Types can be uninhabited + +Phil Wadler's: expression problem: things should be extensible both in the cases of a type, and in the functions operating on the type +Normal data types: can't add new constructors easily +Servant lifts thisup to simply allow the declaration of new types that can be included in the DSL, and new interpretations that can be attached to the types through typeclasses + +APIs become first-class citizens, can pass them around, combine them etc, they are separate from interpretations such as server implementations. In contrast, in most webframeworks, API declaration is implicit + +(Mention previous attemps at type-safe web, Yesod / web-routes + boomerang etc) +### 4 +Three extensions are necessary: +TypeOperators lets us use infix operators on the type level as constructors +DataKinds promotes new type declarations to the kind level, makes type-level literals (strings and natural numbers) available, lets us use type-level lists and pairs in combination with typeoperators +TypeFamilies: Type-level functions, map one set of types to another, come in two forms (type families, non-injective; data families, injective), more powerful than associated types +### 5 +Here you can see servant's general syntax, we define an API type as a simple alias of some other type combinations +strings are type-level strings, not actually values, represent path elements +endpoints are separated by :<|>, all endpoints end in a method with content types and return types +Capture captures path segments, but there are other combinators, for example for headers +Everything that is used from the request is expressed in types, enforcing checkability, no "escape hatch" inside handlers to get request +Every combinator has associated interpretations through typeclasses +### 6 +Explain type alias, point out Capture +Server is a type level function (type family), as mentioned earlier +### 7 +If we expand server (in ghci with kind!) we can see the actual type of the +function +### 8 +Lets speak about some interpretations of these things +### 9 +Servant server is the main interpretation that people are interested in, it's used +for taking a type specification and creating a server from it +Based on WAI, the web application interface, common abstraction for web servers which came out of the Yesod project. Implemented by the web server warp, which Yesod runs on +### 10 +Explain snippet, path gets removed from server type (irrelevant for handler), +route extracts string to value level +### 11 +Explain echo server quickly +### 12 +servant client allows generation of Haskell functions that query the API with the same types +this makes for easy to use RPC for example +### 13 +A lot of other interpretations exist for all kinds of things, mock servers for testing, foreign functions in various languages, documentation ... +### 14 +Demo! +1. Go quickly through code +2. Run server, query with curl +3. Open javascript function +4. Show JS code in the thing +5. Open the map itself +6. Open GHCi, use client +7. Generate docs +### 15 +Conclusion +Servant is pretty good, it's very easy to get started and it's great to raise the level of things that the compiler can tell you about when you do them wrong. +### 16 +Drawbacks. diff --git a/slides.tex b/slides.tex new file mode 100644 index 000000000..d5947eb94 --- /dev/null +++ b/slides.tex @@ -0,0 +1,137 @@ +\documentclass[12pt]{beamer} +\usetheme{metropolis} +\usepackage{minted} + +\newenvironment{code}{\ttfamily}{\par} + +\title{servant} +\subtitle{Defining web APIs at the type-level} + +\begin{document} +\metroset{titleformat frame=smallcaps} +\setminted{fontsize=\scriptsize} + + +\maketitle + +\section{Introduction} + +\begin{frame}{Type-level DSLs?} + \begin{itemize} + \item (Uninhabited) types with attached ``meaning'' + \item The Expression Problem (Wadler 1998) + \item API representation and interpretation are separated + \item APIs become first-class citizens + \end{itemize} +\end{frame} + +\begin{frame}{Haskell extensions} + \begin{itemize} + \item TypeOperators + \item DataKinds + \item TypeFamilies + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{A servant example} + \begin{minted}{haskell} + type PubAPI = "pubs" :> Get ’[JSON] [Pub] + :<|> "pubs" :> "tagged" + :> Capture "tag" Text + :> Get ’[JSON] [Pub] + \end{minted} +\end{frame} + +\begin{frame}[fragile]{Computed types} + \begin{minted}{haskell} + type TaggedPubs = "tagged" :> Capture "tag" Text :> ... + + taggedPubsHandler :: Server TaggedPubs + taggedPubsHandler tag = ... + \end{minted} +\end{frame} + +\begin{frame}[fragile]{Computed types} + \begin{minted}{haskell} + type TaggedPubs = "tagged" :> Capture "tag" Text :> ... + + taggedPubsHandler :: Server TaggedPubs + taggedPubsHandler tag = ... + + Server TaggedPubs ~ + Text -> EitherT ServantErr IO [Pub] + \end{minted} +\end{frame} + +\section{Interpretations} + +\begin{frame}{servant-server} + The one everyone is interested in! + + \begin{itemize} + \item Based on WAI, can run on warp + \item Interprets combinators with a simple \texttt{HasServer c} class + \item Easy to use! + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{HasServer ...} + \begin{minted}{haskell} + instance (KnownSymbol path, HasServer sublayout) + => HasServer (path :> sublayout) where + type ServerT (path :> sublayout) m = ServerT sublayout m + + route ... + where + pathString = symbolVal (Proxy :: Proxy path) + \end{minted} +\end{frame} + +\begin{frame}[fragile]{Server example} + \begin{minted}{haskell} + type Echo = Capture "echo" Text :> Get ’[PlainText] Text + + echoAPI :: Proxy Echo + echoAPI = Proxy + + echoServer :: Server Echo + echoServer = return + \end{minted} +\end{frame} + +\begin{frame}{servant-client} + \begin{itemize} + \item Generates Haskell client functions for API + \item Same types as API specification: For RPC the whole ``web layer'' is abstracted away + \item Also easy to use! + \end{itemize} +\end{frame} + +\begin{frame}{servant-docs, servant-js ...} + Many other interpretations exist already, for example: + \begin{itemize} + \item Documentation generation + \item Foreign function export (e.g. Elm, JavaScript) + \item Mock-server generation + \end{itemize} +\end{frame} + +\section{Demo} + +\section{Conclusion} + +\begin{frame}{Drawbacks} + \begin{itemize} + \item Haskell has no custom open kinds (yet) + \item Proxies are ugly + \item Errors can be a bit daunting + \end{itemize} +\end{frame} + +\begin{frame}{Questions?} + Ølkartet: github.com/tazjin/pubkartet \\ + Slides: github.com/tazjin/servant-presentation + + @tazjin +\end{frame} +\end{document} From ff30233b240fa3438e10729e07300014d921bb55 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Thu, 4 Feb 2016 12:43:13 +0100 Subject: [PATCH 2/3] Updated README with information about the meetup --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ebeca2be8..8cfb04a42 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ -These are the slides for my presentation about servant at Oslo Haskell. +These are the slides for my presentation about [servant][] at [Oslo Haskell][]. -www.meetup.com/Oslo-Haskell/events/227107530/ +A full video recording of the presentation is available [on Vimeo][]. + +[servant]: https://haskell-servant.github.io/ +[Oslo Haskell]: http://www.meetup.com/Oslo-Haskell/events/227107530/ +[on Vimeo]: https://vimeo.com/153901805 From aecd6fda703e1904e3fb366161f54708eb2118ae Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 21 Dec 2019 00:34:11 +0000 Subject: [PATCH 3/3] chore(servant-presentation): Prepare for depot merge --- Makefile => presentations/servant-2016/Makefile | 0 README.md => presentations/servant-2016/README.md | 0 slides.pdf => presentations/servant-2016/slides.pdf | Bin .../servant-2016/slides.pdfpc | 0 slides.tex => presentations/servant-2016/slides.tex | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename Makefile => presentations/servant-2016/Makefile (100%) rename README.md => presentations/servant-2016/README.md (100%) rename slides.pdf => presentations/servant-2016/slides.pdf (100%) rename slides.pdfpc => presentations/servant-2016/slides.pdfpc (100%) rename slides.tex => presentations/servant-2016/slides.tex (100%) diff --git a/Makefile b/presentations/servant-2016/Makefile similarity index 100% rename from Makefile rename to presentations/servant-2016/Makefile diff --git a/README.md b/presentations/servant-2016/README.md similarity index 100% rename from README.md rename to presentations/servant-2016/README.md diff --git a/slides.pdf b/presentations/servant-2016/slides.pdf similarity index 100% rename from slides.pdf rename to presentations/servant-2016/slides.pdf diff --git a/slides.pdfpc b/presentations/servant-2016/slides.pdfpc similarity index 100% rename from slides.pdfpc rename to presentations/servant-2016/slides.pdfpc diff --git a/slides.tex b/presentations/servant-2016/slides.tex similarity index 100% rename from slides.tex rename to presentations/servant-2016/slides.tex