3 ms·
I'm pretty sure you'll be able to follow the Servant docs, which are quite nice: https://haskell-servant.readthedocs.io/en/stable/ https://haskell-servant.read
by mrkgnao 9y ago
I'm pretty sure you'll be able to follow the Servant docs, which are quite nice:
https://haskell-servant.readthedocs.io/en/stable/ https://haskell-servant.readthedocs.io/en/stable/
There are definite advantages, and if you're willing to put in as much work as one, say, unconsciously puts in while setting up JS frameworks, understanding libraries like this is definitely doable. (Without the dissertation.)
- dmitriid 9y agoThe docs are nice, but they complement the code :) Basically to actually understand what's going on, I'll need to learn DataKinds (at the very least). And just to implement something as simple as BasicAuth, this is what I have to start with (https://haskell-servant.readthedocs.io/en/stable/tutorial/Authentication.html https://haskell-servant.readthedocs.io/en/stable/tutorial/Au...): {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} You rarely need anything beyond regular JS to understand the inner workings of most libraries.
- mrkgnao 9y agoServant isn't the "simplest" way to get BasicAuth: you get what you pay for. You can just use one of the raw HTTP servers, like wai or something. They expose an interface not unlike the ones you'll find in, say, Go or C++ or Node or something. Also: {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} These extensions only serve to lift a couple of restrictions that the compiler imposes because the original Haskell Report did. DataKinds and TypeFamilies are the real "new ideas" that you need to pick up after a book at the level of LYAH to understand Servant.
- dmitriid 9y ago> Servant isn't the "simplest" way to get BasicAuth: you get what you pay for. But that's not what I complained about ;) It's funny how in a separate thread someone insists that I have to understand the whole concept of a monad, its three laws, read Wadler's paper etc. In his thread however, it boils down to: oh, just memorise these lines of code, and just blindly copy-paste them wherever. So, my complaint is: to actually understand what's going in the "simplest way to do BasicAuth" I need a whole lot more than just look at the code. I need to understand why I need no less than ten (!) language extensions before I even begin to implement BasicAuth. And five of them just to workaround some Haskell limitation based on some report from 1998 (I'm guessing)? What happens when I move on to OAuth? What will I need then? Also, "oh, you don't really need PhDs in type theory to use Servant" slowly descends to "oh, here are two things regarding types that you'll have to learn". On of them has no useable documentation except some comment on StackOverflow. The other one requires you to be well-versed in type theory. Hence my complaint about "you need a PhD in type theory to work with Haskell".
- mrkgnao 9y ago> "simplest way to do BasicAuth" The simplest way to do BasicAuth in Haskell isn't Servant. I feel like you're intentionally misinterpreting what I'm saying. As for resources, here's a great intro to type-level Haskell: http://www.parsonsmatt.org/2017/04/26/basic_type_level_programming_in_haskell.html http://www.parsonsmatt.org/2017/04/26/basic_type_level_progr... > For some reason, functions that operate on types are called type families. That's the kind of thing you need to know. I doubt the average JS user knows how V8 optimizes execution of code, or whatever. That's what your insistent complaints about type theory amounts to: none of the articles I'm linking to mention inference rules or type judgments or what-have-you. That's what all the research papers about Haskell are for, which you do not need to read to use this language. Even advanced Haskellers don't do type theory (category theory, maybe, not type theory). Only a couple of people working on the compiler do. More DataKinds: https://stackoverflow.com/questions/20558648/what-is-the-datakinds-extension-of-haskell https://stackoverflow.com/questions/20558648/what-is-the-dat... http://ponies.io/posts/2014-07-30-typelits.html http://ponies.io/posts/2014-07-30-typelits.html https://www.schoolofhaskell.com/user/k_bx/playing-with-datakinds https://www.schoolofhaskell.com/user/k_bx/playing-with-datak...