Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submission : Haskell-http template #145

Open
samanthacqs opened this issue Jan 26, 2022 · 1 comment
Open

Submission : Haskell-http template #145

samanthacqs opened this issue Jan 26, 2022 · 1 comment

Comments

@samanthacqs
Copy link

Greetings,

I am an Intern at Stackbuilders, and we have developed a Haskell template that will help to build a Haskell function easier. Under you could find some details.

Summary

Stack Builders is an international software consultancy based in NYC and Quito - Ecuador. We develop personalized code for companies in different sectors, adding value to their business model and contributing to the competitiveness of industries with technological solutions.
At Stack Builders, we specialize in creating and maintaining Haskell projects, including web applications. Haskell is an advanced, purely-functional programming language. Around this topic, we use Haskell to create microservices using Duckling, Pandoc and other packages from the Haskell ecosystem, and we would like to make a collaboration to the OpenFaas template store with one that we have created for Haskell.

Design changes

We have used the template outline to create a Haskell template that has a handler to set up a customizable function and its corresponding tests. Also, the configuration is customizable, and uses common libraries and packages that are in use in production environments

Pros + Cons

Working with Haskell has some advantages and disadvantages. If we are going to talk about advantages, one of them is that it provides an advanced type-system that offers better type-safety than most mainstream languages. Also, it includes type inference on its own. Another great feature is the consistency in syntax that Haskell offers. Finally, the parallelism and multithreading that we can access using this language is a good advantage.
In contrast, Haskell has as well some disadvantages, the complexity of the interface is something to consider. Besides, it is not suitable to make a time-critical application and it has a high learning time. Additionally, this template needs a lot of dependencies and we need to use precompiled Docker images with dependencies.

@alexellis
Copy link
Member

Hi @samanthacqs

Thanks for your interest in OpenFaaS.

Can you add some examples to the README for the repo?

See this repo for example: https://github.com/openfaas/golang-http-template

I noticed some usage of SSH and copying in the user's key in the Dockerfile. That also needs to be documented clearly in your README.

FROM jurisfutura/openfaas-haskell:v0.2 as dependencies

Is there no official template for Haskell on the Docker Hub?

It might be worth mentioning that Web.Scotty is used as a dependency for the template.

Good to see you were able to separate the handler from the main: https://github.com/stackbuilders/haskell-faas-template/blob/main/template/haskell-http/function/src/Handler.hs

Are so many imports necessary for a basic function template?

We'll definitely need a number of examples including how to add an additional dependency. I assume that cabal is the package manager?

Please let Stackbuilders know that if OpenFaaS is useful in their production systems and to serve customers, we are calling for sponsors via GitHub and also offer commercial support and additional features.

Alex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants