Displaying 1 to 20 from 27 results

LJSON - JSON extended with pure functions.

  •    Javascript

LJSON is a drop-in replacement for JSON which also allows you to parse and stringify pure functions and their contents. There are good security reasons for functions to be out of the JSON specs, but most of those are only significant when you allow arbitrary, side-effective programs. With pure functions, one is able to interchange code while still being as safe as with regular JSON. See this and more examples on the Examples directory.

HOL - Canonical sources for HOL4 theorem-proving system

  •    Standard

This is the distribution directory for the Kananaskis release of HOL4. See http://hol-theorem-prover.org for online resources. The following is a brief listing of what's available in the distribution.

lambda - 🔮 Estudos obscuros de programação funcional

  •    Javascript

O propósito desse repo é centralizar tudo que discutirmos na guilda de programação funcional, desde material de estudos até discussões e datas de reuniões. Algumas linguagens mais populares como JS, PHP e C# tem bastante suporte à programação funcional. libs dessa lista tem como objetivo entregar ferramentas para você extrair ao máximo os benefícios de funcional escondidos nelas.




LambdaCalculusPlayground - An Android app that provides a visual interface for creating and evaluating lambda calculus expressions

  •    Javascript

An Android app that lets you build, combine, modify, and evaluate expressions in the untyped lambda calculus, all using a touch interface. The app is available on the Play Store. There is also a demo video.

universe-of-syntax - A universe of scope- and type-safe syntaxes (syntices?)

  •    Agda

As a validating example, I've added a purely symbolic implementation of STLC: reduction rules are explicit and defined in terms of substitution, and normalization is proven a la the relevant chapter of Pierce's Software Foundations. The only difference to https://gallais.github.io/pdf/draft_fscd17.pdf is that the node constructor has a unified global view of all the subterms; in particular, of all the types of the subterms. The meaning of the well-typedness constraint wt is that it takes two collections of types: the types of the n newly bound variables, the types of the subterms; it also receives the type of the term just being constructed.

pomagma - An inference engine for extensional untyped λ-calculus

  •    C++

Pomagma is an inference engine for extensional untyped λ-join-calculus, a simple model of computation in which nondeterminism gives rise to an elegant gradual type system. Pomagma's base theory is being formally verified in the Hstar project.

typed-calc - Interpreter for simply typed lambda calculus implemented in JavaScript λ

  •    Javascript

A type checker and interpreter for simply typed lambda calculus written in JavaScript. Is correct and evaluates to 0.


lc-js - A λ-calculus interpreter written in JavaScript

  •    Javascript

This interpreter was written for this blog post and was based on the implementation showed in the book Types and Programming Languages.

lambda-scala - Type level lambda calculus in Scala

  •    Scala

This repository demonstrates an implementation of lambda calculus in Scala types. More examples are found in TermSpec.scala.

lambda - Macro Lambda Calculus

  •    Javascript

This package implements the lambda calculus using interaction nets, providing CLI and API. Its browserified version is available as an online demo.

lambda-calculus - An introduction to the Lambda Calculus

  •    Haskell

Lambda Calculus is a tiny functional language for expressing computation based on function abstraction and application. This project is intended to be an educational resource for learning and implementing functional programming languages.

church - :church: Church Encoding in JS

  •    Javascript

Church encoding is a way of encoding data using only functions. For instance, we can use functions to represent, booleans, numerals and lists. Higher-order functions are all you need for Turing completeness. Check out the docs.

abstract-algorithm - Optimal evaluator of λ-calculus terms.

  •    Javascript

A cleaned up adaptation of Lamping's abstract algorithm. It evaluates functions optimally by encoding a λ-term as (symmetric) interaction combinators, normalizing the resulting graph, and decoding it back. It asymptotically beats all usual evaluators of functional programs, including Haskell's GHC, Scheme compilers, Google's V8 and so on. Moreover, it is capable of automatically exploiting any inherent parallelizability of your program, since interaction nets are a naturally concurrent model of computation. This implementation consists of two files, a 100-LOC reducer for interaction combinators and a 71-loc conversor of λ-terms to and from those. This particular implementation isn't parallel, but is lazy: it doesn't perform any work that won't influence on the normal form. There is an inherent tradeoff between those. Rust implementation.

lambda-calculus - A simple, clean and fast implementation of the λ-calculus on JavaScript.

  •    Javascript

A simple, clean and fast implementation of the λ-calculus on JavaScript. It has zero dependencies and only 2.65KB gzipped. It evaluates terms very efficiently by using native JS functions, which is possible thanks to a clever compile/readback algorithm based on JS semantics. It includes the most relevant IO formats - bruijn-indices, binary, base64 and the usual "Wikipedia syntax" - so you can easily export to/from other tools. You can also convert native JS functions to terms and back.

elsa - Elsa is a lambda calculus evaluator

  •    Haskell

elsa is a tiny language designed to build intuition about how the Lambda Calculus, or more generally, computation-by-substitution works. Rather than the usual interpreter that grinds lambda terms down to values, elsa aims to be a light-weight proof checker that determines whether, under a given sequence of definitions, a particular term reduces to to another.

magnificATS - Collection of ATS goodness

  •    ATS

A collection of various programming exercises I have done in ATS. INTRO contains some introductory examples and an article I wrote about ATS and Functional Programming.