{"id":27241,"date":"2022-10-26T10:07:33","date_gmt":"2022-10-26T10:07:33","guid":{"rendered":"https:\/\/www.reliablecounter.com\/blog\/?p=27241"},"modified":"2022-10-26T10:07:33","modified_gmt":"2022-10-26T10:07:33","slug":"what-projects-use-haskell-and-why","status":"publish","type":"post","link":"https:\/\/www.reliablecounter.com\/blog\/what-projects-use-haskell-and-why\/","title":{"rendered":"What projects use Haskell and why?"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Haskell is a pure functional programming language. Today Haskell is used by many <\/span><a href=\"https:\/\/serokell.io\/haskell-developers\"><span style=\"font-weight: 400;\">senior developers<\/span><\/a><span style=\"font-weight: 400;\"> as a primary language. Let&#8217;s look at the use cases of Haskell and find out why the advanced software development firms chose it.<\/span><\/p>\n<p><b>Mercury<\/b><\/p>\n<p><span style=\"font-weight: 400;\">First, we have Mercury, which provides banking products. The project offers settlement and savings accounts without monthly fees, debit cards, ACH payments, checks, and free international bank transfers. Among the advantages of Mercury is an excellent website, online registration, and almost complete absence of commissions, and all of this is created in the Haskell language.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Haskell has a reputation for being the language most commonly used in financial and cryptocurrency contexts. It mainly has stable and predictive performance and good parsing libraries.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">According to the Mercury developers, they chose Haskell for the following reasons:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Newtypes allows you to create types in one line. You can further customize the capabilities of these types;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Algebraic data types allow you to model various forms of data;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Data types (Maybe and Either, for example) help model optional data and check for error cases;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Metaprogramming at compile time to eliminate fragile patterns;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The green-thread concurrency model, does not require additional thinking.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Most of these things are present in other languages, but often they are missing in default libraries together with some necessary features, like <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Immutable_object\"><span style=\"font-weight: 400;\">immutability<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Channable\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400;\">The next project is Channable, a management platform through which online stores can publish their products on trading platforms, advertising domains, or price comparison aggregators.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Developers there use Haskell for various backend functionalities. The largest is a data processing system that provides data import from clients, manages data storage, and applies user-defined rules to data before transferring them to third-party platforms.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Another important part of the platform using Haskell is the API gateway, which handles routing and provides a typical implementation for authentication, authorization, speed limits, etc. There are also several small utilities.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Among the reasons for using Haskell, developers distinguish:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">It complements Python;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">It compiles into fast code while providing security thanks to a strong type system.;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">It makes scaling easier.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Currently, developers are using Haskell in several more projects and seem to be very happy with it.<\/span><\/p>\n<p><b>Haskoin\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400;\">And finally, we have Haskoin Core, an open-source Haskell library for Bitcoin and Bitcoin Cash. It has been created to replace an outdated backend that was expensive and not very reliable or scalable. Currently, it serves almost all requests for Bitcoin and Bitcoin Cash data coming from the wallet and web viewer.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The developers say that Haskell was chosen because:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Haskell&#8217;s type system and expressive nature made it possible to write accurate code in a short time;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Haskell pushes the programmer to write lots of small functions, reuse abstractions, and follow a declarative style that is easy to understand;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The Haskell compiler outputs well-optimized code;<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">It is easier to write functions in Haskell, and the data has visual quality.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The main advantages of Haskell are safety based on the strong typization and pure functions. It makes it possible to write software components with high guarantees of accuracy that extend to the composition of such components, creating more complex systems from them. This feature of Haskell means the ability to more easily create complicated multi-functional systems with relatively simple and transparent blocks of code, which usually causes difficulties for most programmers working with large systems.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Overall, it&#8217;s no surprise that developers are choosing Haskell as their powerful programming tool programming. If you need other use cases, you can check this section of <\/span><a href=\"https:\/\/serokell.io\/blog\/haskell-in-production\"><span style=\"font-weight: 400;\">Serokell&#8217;s blog<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haskell is a pure functional programming language. Today Haskell is used by many senior developers as a primary language. Let&#8217;s look at the use cases of Haskell and find out why the advanced software development [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":23757,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[531],"tags":[],"class_list":["post-27241","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web"],"_links":{"self":[{"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/posts\/27241"}],"collection":[{"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/comments?post=27241"}],"version-history":[{"count":1,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/posts\/27241\/revisions"}],"predecessor-version":[{"id":27245,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/posts\/27241\/revisions\/27245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/media\/23757"}],"wp:attachment":[{"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/media?parent=27241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/categories?post=27241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reliablecounter.com\/blog\/wp-json\/wp\/v2\/tags?post=27241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}