Here’s a new Haskell WAT?! Haskell has a type Rational for working with precisely-valued fractional numbers, and it models the mathematical concept of a rational number. Although it’s relatively slow compared with Double, it doesn’t suffer from the rounding that’s intrinsic to floating-point arithmetic. It’s very useful when writing tests because an exact result can be predicted ahead of time. […]
FP Complete is actively seeking multiple engineers to work with our globally distributed team of software engineers. This blog post is to announce a new job opening for a developer role focused on Haskell development. At all times you can find an up-to-date listing of job openings on our jobs page. Below is the job information […]
This is the fourth and final post in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Understanding Hyper, and first experiences with Axum Demonstration of Tonic for a gRPC client/server Today’s post: How to combine Axum and […]
This is the third of four posts in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Understanding Hyper, and first experiences with Axum Today’s post: Demonstration of Tonic for a gRPC client/server How to combine Axum and […]
This is the second of four posts in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Today’s post: Understanding Hyper, and first experiences with Axum Demonstration of Tonic for a gRPC client/server How to combine Axum and […]
I’ve played around with various web server libraries and frameworks in Rust, and found various strengths and weaknesses with them. Most recently, I put together an FP Complete solution called Zehut (which I’ll blog about another time) that needed to combine a web frontend and gRPC server. I used Hyper, Tonic, and a minimal library […]
What’s wrong with this program? fn main() { let option_name: Option<String> = Some(“Alice”.to_owned()); match option_name { Some(name) => println!(“Name is {}”, name), None => println!(“No name provided”), } println!(“{:?}”, option_name); } The compiler gives us a wonderful error message, including a hint on how to fix it: error[E0382]: borrow of partially moved value: `option_name` –> […]
I’m happy to announce that over the next few months, FP Complete will be offering intermediate training courses on both Haskell and Rust. This is a follow up to our previous beginner courses on both languages as well. I’m excited to get to teach both of these courses. More details below, but cutting to the […]
This post has nothing to do with marriage. Tying the knot is, in my opinion at least, a relatively obscure technique you can use in Haskell to address certain corner cases. I’ve used it myself only a handful of times, one of which I’ll reference below. I preface it like this to hopefully make clear: […]
I’ve spent a considerable amount of coding time getting into the weeds of path parsing and generation in web applications. First with Yesod in Haskell, and more recently with a side project for routetypes in Rust. (Side note: I’ll likely do some blogging and/or videos about that project in the future, stay tuned.) My recent […]