Elm - Functional Reactive Programming Language compiles to Javascript

  •        532

Elm is a functional reactive programming (FRP) language that compiles to HTML, CSS, and JS. FRP is a concise and elegant way to create highly interactive applications and avoid callbacks. It aims to make web development more pleasant. Functional Reactive Programming (FRP) is a high-level way to work with interactions. It provides control flow structures for time.

http://elm-lang.org/

Tags
Implementation
License
Platform

   




Related Projects

reactive-banana - Library for functional reactive programming in Haskell.


Reactive-banana is a library for Functional Reactive Programming (FRP), written in Haskell. See the project homepage for documentation, examples and so on.

bacon.js - FRP (functional reactive programming) library for Javascript


FRP (functional reactive programming) library for Javascript

talk-2015-essence-and-origins-of-frp - A keynote talk for LambdaJam 2015 (July 15--16)


Functional Reactive Programming (FRP) is now 20 years old. Although originally motivated by interactive 3D computer graphics, FRP is a general paradigm for describing dynamic (time-varying) information. Such information had traditionally been described in software only indirectly, as successive side effects of sequential execution. In contrast, FRP expressions describe entire evolutions of values over time, representing these evolutions directly as first-class values. From the start, FRP has been based on two simple and fundamental principles, namely (a) having a precise and simple denotation and (b) continuous time. The first property, which Peter Landin called "denotative" (and "genuinely functional"), applies across problem domains and ensures a precise, implementation-independent specification, insulated from operational details as found in efficient implementations. As such, denotative systems can be reasoned about practically and rigorously. The second property (temporal continuity) is domain-specific and is crucial for simple composability, natural specification of behavior via integration and differentiation, and adaptively efficient implementations. In this talk, I'll share with you the essence of the original (denotative and continuous) FRP. You'll see the thought processes that led to its design, including the care I took to keep the specification both precise and simple, and hopefully, you'll get a sense of why you might care. As a more in-depth follow-up, the "Denotational Design" workshop explores how to use denotations to design libraries in general.


ios-oss - Kickstarter for iOS. Bring new ideas to life, anywhere.


Welcome to Kickstarter’s open source iOS app! Come on in, take your shoes off, stay a while—explore how Kickstarter’s native squad has built and continues to build the app. We’ve also open sourced our Android app, and read more about our journey to open source here.

ReactiveUI - An advanced, composable, functional reactive model-view-viewmodel framework for all


ReactiveUI is a composable, cross-platform model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming which is a paradigm that allows you to abstract mutable state away from your user interfaces and express the idea around a feature in one readable place and improve the testability of your application.That's reactive programming: changes propagate throughout a system automatically. Welcome to the peanut butter and jelly of programming paradigms. For further information please watch the this video from the Xamarin Evolve conference - Why You Should Be Building Better Mobile Apps with Reactive Programming by Michael Stonis.

Nest - A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular


A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular. Nest is a framework for building efficient, scalable Node.js server-side applications. It uses modern JavaScript, is built with TypeScript (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).

android-oss - Kickstarter for Android. Bring new ideas to life, anywhere.


Welcome to Kickstarter's open source Android app! Come on in, take your shoes off, stay a while—explore how Kickstarter's native squad has built and continues to build the app, discover our implementation of RxJava in logic- filled view models, and maybe even create an issue or two. We've also open sourced our iOS app, written in Swift: check it out here. Read more about our journey to open source here.

FunctionalAndroidReference - Showcase project of Functional Reactive Programming on Android, using RxJava


FunctionalAndroidReference is a showcase project of Functional Reactive Programming on Android, using RxJava. It's a companion app to the presentation "Fully Reactive Apps" at Droidcon UK 2016.

frp-zoo - Comparing many FRP implementations by reimplementing the same toy app in each.


Interested in trying FRP (Functional Reactive Programming), but overwhelmed by the number of FRP libraries to choose from? To help you with this choice, this repository contains several implementations of the same small program, to give you a taste of what each library looks like. For comparison, here are a few non-FRP implementations of the same small program.

verve-lang - A functional language for the working hacker


Verve is a functional language for the working hacker. It was designed with users that come from other language paradigms in mind (primarily object-oriented). It aims to ease the path into the functional programming world by offering a more familiar take on functional idioms, like you'd find in most modern languages. Verve has lists, classes, objects, lambdas, interfaces and more, and it tries to give them all a beginner-friendly API, but all the concepts found here have can be expressed in purely functional languages.

Vavr - Object-functional language extension to Java


Vavr is an object-functional language extension to Java 8, which aims to reduce the lines of code and increase code quality. It provides persistent collections, functional abstractions for error handling, concurrent programming, pattern matching and much more.

coconut - Simple, elegant, Pythonic functional programming.


Coconut (coconut-lang.org) is a variant of Python that adds on top of Python syntax new features for simple, elegant, Pythonic functional programming.

awesome-fp-js - :sunglasses: A curated list of awesome functional programming stuff in js


This is a curated list of awesome functional programming code and learning resources for JavaScript. As a multi-paradigm programming language, JavaScript can be written in many styles. With these resources we want to help you to make better use of JavaScript’s support for writing programs in a functional way. Functional programming is a style of programming which models computations as the evaluation of expressions. Contrast this with imperative programming where programs are composed of statements which change global state when executed. Functional programming typically avoids using mutable state and favors side-effect free functions and immutable data instead. This encourages writing composable and declarative programs that are easy to reason about.

Eta - A powerful language for building scalable systems on the JVM


Eta is a pure, lazy, strongly typed functional programming language on the JVM. It is a dialect of Haskell on the JVM. It is pure by default which means that calling a function with the same arguments will yield the same results every time. It is lazy by default which means that data stays in unevaluated state until a function needs to peek inside.

frdomain - Code repo for Functional and Reactive Domain Modeling


Code repo for Functional and Reactive Domain Modeling.Functional and Reactive Domain Modeling teaches you how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions. You will start with the basics of functional programming and gradually progress to the advanced concepts and patterns that you need to know to implement complex domain models. The book demonstrates how advanced FP patterns like algebraic data types, typeclass based design, and isolation of side-effects can make your model compose for readability and verifiability. On the subject of reactive modeling, the book focuses on higher order concurrency patterns like actors and futures. It uses the Akka framework as the reference implementation and demonstrates how advanced architectural patterns like event sourcing and CQRS can be put to great use in implementing scalable models. You will learn techniques that are radically different from the standard RDBMS based applications that are based on mutation of records. You'll also pick up important patterns like using asynchronous messaging for interaction based on non blocking concurrency and model persistence, which delivers the speed of in-memory processing along with suitable guarantees of reliability.

scalacaster - Purely Functional Algorithms and Data Structures in Scala


Since Fender Stratocaster is a classic guitar, Scalacaster is about classic algorithms and data structures in Scala. Scalacaster includes loads of widely used implementation techniques and approaches, which have been developed by best programmers and enthusiasts of functional programming. Studying purely functional data structures is always fun and challenge for researchers, since data structures in a functional setting are much elegant and smarter than in an imperative setting. Scalacaster is neither a library nor framework. Moreover, Scalacaster`s code is not supposed to be executed at all. Scalacaster's code is not for Scala compiler but for human beings, for enthusiasts and researchers of the Scala programming language and its application in the area of implementation of the purely functional data structures. So, the best way to use Scalacaster is to read through its source code and comments.