Alternatives to PureScript logo

Alternatives to PureScript

Haskell, Elm, TypeScript, LiveScript, and ClojureScript are the most popular alternatives and competitors to PureScript.
26
17
+ 1
4

What is PureScript and what are its top alternatives?

A small strongly typed programming language with expressive types that compiles to JavaScript, written in and inspired by Haskell.
PureScript is a tool in the Templating Languages & Extensions category of a tech stack.
PureScript is an open source tool with 6.1K GitHub stars and 447 GitHub forks. Here鈥檚 a link to PureScript's open source repository on GitHub

PureScript alternatives & related posts

related Haskell posts

Vadim Bakaev
Vadim Bakaev
Scala
Scala
Haskell
Haskell

Why I am using Haskell in my free time?

I have 3 reasons for it. I am looking for:

Fun.

Improve functional programming skill.

Improve problem-solving skill.

Laziness and mathematical abstractions behind Haskell makes it a wonderful language.

It is Pure functional, it helps me to write better Scala code.

Highly expressive language gives elegant ways to solve coding puzzle.

See more

related Elm posts

Elm
Elm
Redux
Redux
React
React

React is awesome, but is just a view library, when we need to manage state, there is Redux.js. The ecosystem of redux is big, complex and hard to integrate. That's why we choose to create hydux. Hydux is simple, the main idea is from Elm, a pure functional vdom-based framework for front-end. We seperate the whole app with state, actions and views. Which means not only our views are a tree, but also our state and actions. Reuse state and actions are just like reuse react components, no need to consider dependences.

See more

related TypeScript posts

Yshay Yaacobi
Yshay Yaacobi
Software Engineer | 27 upvotes 282.3K views
atSolutoSoluto
Docker Swarm
Docker Swarm
Kubernetes
Kubernetes
Visual Studio Code
Visual Studio Code
Go
Go
TypeScript
TypeScript
JavaScript
JavaScript
C#
C#
F#
F#
.NET
.NET

Our first experience with .NET core was when we developed our OSS feature management platform - Tweek (https://github.com/soluto/tweek). We wanted to create a solution that is able to run anywhere (super important for OSS), has excellent performance characteristics and can fit in a multi-container architecture. We decided to implement our rule engine processor in F# , our main service was implemented in C# and other components were built using JavaScript / TypeScript and Go.

Visual Studio Code worked really well for us as well, it worked well with all our polyglot services and the .Net core integration had great cross-platform developer experience (to be fair, F# was a bit trickier) - actually, each of our team members used a different OS (Ubuntu, macos, windows). Our production deployment ran for a time on Docker Swarm until we've decided to adopt Kubernetes with almost seamless migration process.

After our positive experience of running .Net core workloads in containers and developing Tweek's .Net services on non-windows machines, C# had gained back some of its popularity (originally lost to Node.js), and other teams have been using it for developing microservices, k8s sidecars (like https://github.com/Soluto/airbag), cli tools, serverless functions and other projects...

See more
Jonathan Pugh
Jonathan Pugh
Software Engineer / Project Manager / Technical Architect | 19 upvotes 189.3K views
Pouchdb
Pouchdb
CouchDB
CouchDB
Font Awesome
Font Awesome
CSS 3
CSS 3
Apache Cordova
Apache Cordova
PhoneGap
PhoneGap
HTML5
HTML5
Ruby
Ruby
Babel
Babel
Webpack
Webpack
Visual Studio Code
Visual Studio Code
Figma
Figma
TypeScript
TypeScript
JavaScript
JavaScript
Framework7
Framework7
#Css
#CSS3
#SCSS
#Sass
#Less
#Electron
#HandleBars
#Template7
#Sketch
#GraphQL
#HTML5
#GraphCool

I needed to choose a full stack of tools for cross platform mobile application design & development. After much research and trying different tools, these are what I came up with that work for me today:

For the client coding I chose Framework7 because of its performance, easy learning curve, and very well designed, beautiful UI widgets. I think it's perfect for solo development or small teams. I didn't like React Native. It felt heavy to me and rigid. Framework7 allows the use of #CSS3, which I think is the best technology to come out of the #WWW movement. No other tech has been able to allow designers and developers to develop such flexible, high performance, customisable user interface elements that are highly responsive and hardware accelerated before. Now #CSS3 includes variables and flexboxes it is truly a powerful language and there is no longer a need for preprocessors such as #SCSS / #Sass / #less. React Native contains a very limited interpretation of #CSS3 which I found very frustrating after using #CSS3 for some years already and knowing its powerful features. The other very nice feature of Framework7 is that you can even build for the browser if you want your app to be available for desktop web browsers. The latest release also includes the ability to build for #Electron so you can have MacOS, Windows and Linux desktop apps. This is not possible with React Native yet.

Framework7 runs on top of Apache Cordova. Cordova and webviews have been slated as being slow in the past. Having a game developer background I found the tweeks to make it run as smooth as silk. One of those tweeks is to use WKWebView. Another important one was using srcset on images.

I use #Template7 for the for the templating system which is a no-nonsense mobile-centric #HandleBars style extensible templating system. It's easy to write custom helpers for, is fast and has a small footprint. I'm not forced into a new paradigm or learning some new syntax. It operates with standard JavaScript, HTML5 and CSS 3. It's written by the developer of Framework7 and so dovetails with it as expected.

I configured TypeScript to work with the latest version of Framework7. I consider TypeScript to be one of the best creations to come out of Microsoft in some time. They must have an amazing team working on it. It's very powerful and flexible. It helps you catch a lot of bugs and also provides code completion in supporting IDEs. So for my IDE I use Visual Studio Code which is a blazingly fast and silky smooth editor that integrates seamlessly with TypeScript for the ultimate type checking setup (both products are produced by Microsoft).

I use Webpack and Babel to compile the JavaScript. TypeScript can compile to JavaScript directly but Babel offers a few more options and polyfills so you can use the latest (and even prerelease) JavaScript features today and compile to be backwards compatible with virtually any browser. My favorite recent addition is "optional chaining" which greatly simplifies and increases readability of a number of sections of my code dealing with getting and setting data in nested objects.

I use some Ruby scripts to process images with ImageMagick and pngquant to optimise for size and even auto insert responsive image code into the HTML5. Ruby is the ultimate cross platform scripting language. Even as your scripts become large, Ruby allows you to refactor your code easily and make it Object Oriented if necessary. I find it the quickest and easiest way to maintain certain aspects of my build process.

For the user interface design and prototyping I use Figma. Figma has an almost identical user interface to #Sketch but has the added advantage of being cross platform (MacOS and Windows). Its real-time collaboration features are outstanding and I use them a often as I work mostly on remote projects. Clients can collaborate in real-time and see changes I make as I make them. The clickable prototyping features in Figma are also very well designed and mean I can send clickable prototypes to clients to try user interface updates as they are made and get immediate feedback. I'm currently also evaluating the latest version of #AdobeXD as an alternative to Figma as it has the very cool auto-animate feature. It doesn't have real-time collaboration yet, but I heard it is proposed for 2019.

For the UI icons I use Font Awesome Pro. They have the largest selection and best looking icons you can find on the internet with several variations in styles so you can find most of the icons you want for standard projects.

For the backend I was using the #GraphCool Framework. As I later found out, #GraphQL still has some way to go in order to provide the full power of a mature graph query language so later in my project I ripped out #GraphCool and replaced it with CouchDB and Pouchdb. Primarily so I could provide good offline app support. CouchDB with Pouchdb is very flexible and efficient combination and overcomes some of the restrictions I found in #GraphQL and hence #GraphCool also. The most impressive and important feature of CouchDB is its replication. You can configure it in various ways for backups, fault tolerance, caching or conditional merging of databases. CouchDB and Pouchdb even supports storing, retrieving and serving binary or image data or other mime types. This removes a level of complexity usually present in database implementations where binary or image data is usually referenced through an #HTML5 link. With CouchDB and Pouchdb apps can operate offline and sync later, very efficiently, when the network connection is good.

I use PhoneGap when testing the app. It auto-reloads your app when its code is changed and you can also install it on Android phones to preview your app instantly. iOS is a bit more tricky cause of Apple's policies so it's not available on the App Store, but you can build it and install it yourself to your device.

So that's my latest mobile stack. What tools do you use? Have you tried these ones?

See more
LiveScript logo

LiveScript

18
4
0
18
4
+ 1
0
A language which compiles to JavaScript
    Be the first to leave a pro
    LiveScript logo
    LiveScript
    VS
    PureScript logo
    PureScript
    ClojureScript logo

    ClojureScript

    108
    89
    2
    108
    89
    + 1
    2
    A Clojure compiler targeting JavaScript
    ClojureScript logo
    ClojureScript
    VS
    PureScript logo
    PureScript

    related ClojureScript posts

    C#
    C#
    Java
    Java
    JavaScript
    JavaScript
    ClojureScript
    ClojureScript
    Clojure
    Clojure

    I adopted Clojure and ClojureScript because:

    • it's 1 language, multiple platforms.
    • Simple syntax.
    • Designed to avoid unwanted side effects and bugs.
    • Immutable data-structures.
    • Compact code, very expressive.
    • Source code is data.
    • It has super-flexible macro.
    • Has metadata.
    • Interoperability with JavaScript, Java and C#.
    See more
    Mustache logo

    Mustache

    1.4K
    174
    50
    1.4K
    174
    + 1
    50
    Logic-less templates
    Mustache logo
    Mustache
    VS
    PureScript logo
    PureScript
    Hogan.js logo

    Hogan.js

    298
    19
    3
    298
    19
    + 1
    3
    A compiler for the Mustache templating language
    Hogan.js logo
    Hogan.js
    VS
    PureScript logo
    PureScript
    Smarty logo

    Smarty

    205
    9
    0
    205
    9
    + 1
    0
    Template engine for PHP
      Be the first to leave a pro
      Smarty logo
      Smarty
      VS
      PureScript logo
      PureScript
      Jinja2 logo

      Jinja2

      136
      98
      5
      136
      98
      + 1
      5
      Full featured template engine for Python
      Jinja2 logo
      Jinja2
      VS
      PureScript logo
      PureScript
      Flow (JS) logo

      Flow (JS)

      125
      36
      0
      125
      36
      + 1
      0
      Flow is a static type checker for Javascript (by Facebook)
        Be the first to leave a pro
        Flow (JS) logo
        Flow (JS)
        VS
        PureScript logo
        PureScript

        related Flow (JS) posts

        Jarvis Stubblefield
        Jarvis Stubblefield
        Flow (JS)
        Flow (JS)
        TypeScript
        TypeScript

        I use TypeScript because it isn't just about validating the types I'm expecting to receive though that is a huge part of it too. Flow (JS) seems to be a type system only. TypeScript also allows you to use the latest features of JavaScript while also providing the type checking. To be fair to Flow (JS), I have not used it, but likely wouldn't have due to the additional features I get from TypeScript.

        See more
        David Koblas
        David Koblas
        VP Engineering at Payment Rails | 9 upvotes 8.5K views
        atPayment RailsPayment Rails
        TypeScript
        TypeScript
        Flow (JS)
        Flow (JS)
        JavaScript
        JavaScript

        We originally (in 2017) started rewriting our platform from JavaScript to Flow (JS) but found the library support for Flow was lacking. After switching gears to TypeScript we've never looked back. At this point we're finding that frontend and backend libraries are supporting TypeScript out of the box and where the support is missing that the commuity is typically got a solution in hand.

        See more
        Twig logo

        Twig

        41
        18
        0
        41
        18
        + 1
        0
        A flexible, fast, and secure template engine
          Be the first to leave a pro
          Twig logo
          Twig
          VS
          PureScript logo
          PureScript
          Liquid logo

          Liquid

          33
          3
          0
          33
          3
          + 1
          0
          Open-source template language written in Ruby
            Be the first to leave a pro
            Liquid logo
            Liquid
            VS
            PureScript logo
            PureScript
            EJS logo

            EJS

            30
            18
            0
            30
            18
            + 1
            0
            An Embedded JavaScript templating Language
              Be the first to leave a pro
              EJS logo
              EJS
              VS
              PureScript logo
              PureScript
              RactiveJS logo

              RactiveJS

              20
              23
              18
              20
              23
              + 1
              18
              Next-generation DOM manipulation
              RactiveJS logo
              RactiveJS
              VS
              PureScript logo
              PureScript
              Haxe logo

              Haxe

              19
              4
              0
              19
              4
              + 1
              0
              The Cross-platform Toolkit
                Be the first to leave a pro
                Haxe logo
                Haxe
                VS
                PureScript logo
                PureScript
                Nunjucks logo

                Nunjucks

                17
                6
                0
                17
                6
                + 1
                0
                A templating language for JavaScript
                  Be the first to leave a pro
                  Nunjucks logo
                  Nunjucks
                  VS
                  PureScript logo
                  PureScript
                  Jsonnet logo

                  Jsonnet

                  11
                  1
                  0
                  11
                  1
                  + 1
                  0
                  A data templating language for app and tool developers
                    Be the first to leave a pro
                    Jsonnet logo
                    Jsonnet
                    VS
                    PureScript logo
                    PureScript